- PR -

Javaアプリ監視プログラム

1
投稿者投稿内容
ふうた
大ベテラン
会議室デビュー日: 2001/08/23
投稿数: 198
お住まい・勤務地: 岡山
投稿日時: 2003-06-21 11:27
例えば、以下の要件は実現可能でしょうか?

・既にJavaのコンソールアプリ(App1)があります。
・何かしらの監視プログラム(App2)を作成して、App1の起動終了を管理したい。
 例えば、ログにある出力がなされた時にApp1を再起動する。
・App1には一切手を加えない。

即ち、Javaサーブレット(上の例では、App1)に対するサーブレットコンテナ(App2)のようなものを考えています。
(ただし、スレッドである必要はなくプロセスで管理できれば十分。)

監視の部分についてはどうにでもなると思うのですが、(App1に手を加えることなく)App1の起動・終了を行えるのかどうかというのがよく分かりません。
また、そういうことをした場合にApp1の動作が単独で動作させた場合とまったく同じであることが保証できるのかどうかよく分かりません。

どうでしょうか?


以下、環境を追記
OS:Windows2000 Server
JDK:1.3.1



[ メッセージ編集済み 編集者: ふうた 編集日時 2003-06-21 18:19 ]
まりり
ぬし
会議室デビュー日: 2001/12/05
投稿数: 329
投稿日時: 2003-06-21 23:53
引用:

監視の部分についてはどうにでもなると思うのですが、(App1に手を加えることなく)App1の起動・終了を行えるのかどうかというのがよく分かりません。


java.lang.Runtime,java.lang.Processあたりを使ってApp2から
すべてのApp1の起動・終了を管理したらできないでしょうか?
App1のつくりによってしまうとは思いますけれど。
ふうた
大ベテラン
会議室デビュー日: 2001/08/23
投稿数: 198
お住まい・勤務地: 岡山
投稿日時: 2003-06-23 14:35
試しにテストプログラムを作ってみました。

App2 は、別スレッドを起動してそこでApp1を起動する。
App2の元のスレッドで、イベント(とりあえずキー入力)を監視して
App1の起動・終了をおこなう。

【起動】
Process ps = Runtime.getRuntime().exec( "java App1" )
【終了】
ps.destroy()
といった感じです。

とりあえず、それなりには動いているように見えます。
(これによって何か弊害があるのかどうかまでは見えていません。)
1

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