- PR -

常駐プロセスをbatファイルで起動・停止制御したい

投稿者投稿内容
X09A正義
会議室デビュー日: 2005/08/30
投稿数: 16
投稿日時: 2006-02-07 11:28
はじめまして、
現在Javaの常駐プロセスを
Windows2003Serverのbatファイルで起動・停止制御しようとして悩んでいます。

(新人故に、説明で変な所があるかもしれないですが
 ご了承ください)

常駐プロセスをbatファイルで起動・停止しようとしているのは、
クラスタ管理で障害発生時にはフェイルオーバさせるからです。

UNIXで動く同様の常駐プロセスに関しては、
シェルでの起動時にPID(プロセスID)をファイルに取得して、
停止したいときはそのPIDを指定して終了させています。

同様の処理がwindowsでもできないか試行錯誤しています。
(TASKKILLコマンドで終了させる対象のPIDを取得できなくて困っている。)

尚、起動時にはコマンドプロンプトを出さないために
@start javaw -jar XXX.jar
と言う様に、javaw&startコマンドで起動しています。

上記、またはいずれかのRMI等Javaの内部処理を使わずに
OSから終了させる方法をご存知の方がいましたら知恵をお貸しください。

以上、宜しくお願いいたします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-02-07 12:17
サービスに登録して
net stop サービス名
ではいかがでしょう。
NAO
ぬし
会議室デビュー日: 2001/10/24
投稿数: 1256
お住まい・勤務地: 神奈川のはずれから東京の下町
投稿日時: 2006-02-07 12:53
sc(サービスコントロール)を使う方法もありますよ。 
X09A正義
会議室デビュー日: 2005/08/30
投稿数: 16
投稿日時: 2006-02-07 13:03
早速の返信ありがとうございます。

ですが、一点書き忘れていたことがありました。
それは、リソースキット等のツールをインストールしないで
実装するのが前提となっております。

実ははじめはJavaServiceというフリーツールを使い、
サービス登録してクラスタ管理する予定でした。

ですが、それがプロジェクトの統括より×が出たので、
代替案を探している状態です。

結果、行き着いたのがbatによる実行なのですが、
RMIも可能な限り使わない方針になっておりますので、
悩んでおります。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-02-08 03:16
tasklist で javaw.exe が動いているプロセスIDを割り出して taskkill とか?
http://tinyurl.com/cqtaq
http://tinyurl.com/ak9dj


[ メッセージ編集済み 編集者: インギ 編集日時 2006-02-08 03:16 ]
X09A正義
会議室デビュー日: 2005/08/30
投稿数: 16
投稿日時: 2006-02-08 10:30
色々なご意見(TдT) アリガトウございます。

>>インギ殿
基本的にはそのようにしようとしています。
しかし、どのJavaVMが終了させたいプロセスか区別が付かず、
TASKKILL /FI "Imagename eq javaw.exe"
等のコマンドを実行すると全てのjavawでのVMが終了されてしまいます。
よって、JavaVM起動時にPIDを取得して、
TASKKILL /FI "PID eq 794"
と実行したい訳です。

その後、batではなくWHSなるものからstartコマンドを実行すると、
PIDが取得できるらしいと言う情報を取得しました。
こちらを試してみようと思います。

詳しい方がいましたら、ご意見をお待ちしております。
では、宜しくお願いいたします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-02-08 12:09
うーん、Windowsには詳しくないのですが、Java固有の機能を使わずに実現したいのだとすれば
こちら↓で聞くのも手かもしれませんね。
http://www.atmarkit.co.jp/bbs/phpBB/viewforum.php?forum=6
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2006-02-08 12:35
SunのJDK1.5を使われているのであれば、
jpsコマンドでjavaのみのPIDを列挙できます。

起動オプションなども取得する事が可能であるため、
対象のJVMを判断する事が可能になると思います。

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