- PR -

Tomcat内のプログラムを外部から実行

1
投稿者投稿内容
最大40
常連さん
会議室デビュー日: 2004/02/06
投稿数: 41
投稿日時: 2007-11-21 22:24
Tomcat内に配置されているプログラムを、外部から実行する方法を探しています。
Tomcat内に有り、通常は画面から実行される機能を、
バッチ処理のような形でTomcatの外から実行する方法はあるのでしょうか。

理想としてはCRON等で定期的に実行。。というのがやりたいのですが、
自分の調べた限りでは、
・ページに手動でアクセスする
・HTTPClientのようなプログラムを作り、定期的にアクセスをかける

と言ったようなHTTP経由の方法しかなさそうでした。
Tomcatの機能、もしくは何かうまい方法がありましたら教えてください。

[環境]
OS:RHEL4
Java:1.5
Tomcat5.23
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-11-21 22:49
Tomcatにデプロイされているクラスにmainメソッドを書いて、
直接Javaコマンドで呼び出せばよいと思います。

Tomcatにデプロイされているアプリのステートに依存するのであれば、
無難な方法として、Httpでキックするのが楽かと思います。

特別なクライアントを使わなくても、java.net.URLクラスを使えば十分です。
クライアント自体も結局はmainメソッドを持つクラスになります。

コマンドならcronとwget辺りを組み合わせれば、
特別プログラムを作成する必要もないかと思います。
GENZO
大ベテラン
会議室デビュー日: 2003/11/26
投稿数: 111
お住まい・勤務地: 名古屋
投稿日時: 2007-11-21 23:00
引用:

最大40さんの書き込み (2007-11-21 22:24) より:
・HTTPClientのようなプログラムを作り、定期的にアクセスをかける


作るならJMeterのような負荷テストツールを利用してはいかがでしょう?
Ray
ベテラン
会議室デビュー日: 2007/09/13
投稿数: 88
投稿日時: 2007-11-21 23:36
tomcat内にどういうアプリケーションを置いているのかわからないので、MVCのservletということで。
先にmainがあるCUIアプリケーションを作って、それをservletから呼び出す方が簡単です。
そうするとHttpRequest、HttpResponseを使わないようになるので、servletはその仲介を行うようになります。

CUIをベースとして、webapp、swingで動くアプリケーションを開発したことがあります。
対象とするロジックがJSPとかにあると大変そうですね。
CUIを呼ぶとjavavmが別になるので、同期が必要だったりしたら、素直にHTTP経由で行います。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-11-22 13:21
Tomcat上でタイマーで定時的に呼ばれる処理を書くことも可能ですね。
最大40
常連さん
会議室デビュー日: 2004/02/06
投稿数: 41
投稿日時: 2007-11-22 13:31
かつのり さん
GENZO さん
Ray さん
nagise さん

色々とアドバイスを頂き、有難うございますm(_ _)m
今回はTomcatのVM内で実行されているクラスの情報が必要になる処理ですので、

・Tomcat内でタイマーを持つ
・wget他のコマンド・ツールで外からたたく

を検討しようかと思います。
HttpClientか何かでプログラムを組まなきゃ、、
と思ってたんですが、良く考えたらwgetやtelnetでいいんですよね
大変参考になりました。

また何かありましたらよろしくお願いします
1

スキルアップ/キャリアアップ(JOB@IT)