2009-05-18 10 views
2

Tomcatサーバーを実行していて、そのサーバーでコードを更新しようとしています。これを行うには、Windows環境でサーバーを確実にシャットダウンする必要があります。私の知る限りでは、tomcat shutdown.batスクリプトは暴走スレッドに関する問題を抱えている可能性があります。偶然、.batスクリプトを動作させないスレッドを作成しても動作するようにする必要があります。私が試みてきたアプローチは、サービス名でNET STOPコマンドを実行することです - しかし、私はいくつかのインスタンス(複数のサービスを意味する)で1台のマシンで複数のtomcatを実行しています。自分のコードを実行しているtomcatに関連するサービスの名前を取得する方法はありますか?私が調べなければならない他の良い解決策がありますか?JavaプログラムからWindowsセッションを終了する

私は多くのクライアントを持っているので、追加のソフトウェアのインストールやサービスの名前のハードコード化を伴わないソリューションが好まれます。

答えて

0

"HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \"のようなキーとサービス名でサービスがWindowsレジストリにリストされていることがわかりました。イメージパスには、実行可能ファイルのフルパス名が含まれます。レジストリをスキャンすると、TomcatのホームURLと実行可能ファイルのパスが一致し、キーからサービス名が取得できます。その後、私はちょうどそれをネットストップすることができます。

0

cygwinとnetstatを使用して、そのポートをリスンしているプロセスを探し、それをPIDで強制終了します。

0

Tomcatホットデプロイ。新しいWARファイルを削除できない特別な理由はありますか?

+2

これは開発に非常に役立ち、非常に定期的に更新されますが、私が周りにいた限り、Tomcatのホットデプロイメントではpermgen漏れがありました。しかし、私は間違っていることが証明されたい。 – Jared

1

あなたがTomcatを実行しているVmの中からサービス名の後にいるなら、あなたはManagementBeanのものを調べたいかもしれません。太陽の次の投稿がいくつかの詳細に入ります。何をするにしても

Sun forums

は、そのすべてのOSに依存するので、かなりハックになるだろう!私は確かにTomcatコントロール&デプロイメントサービスに固執することをお勧めします。Tomcatプロセスを強制終了する必要はなく、Tomcatのホットデプロイメント機能を使用してwebappを再構築できる必要があります - コントロールパネルから提供されるか、風と一緒に。

+1

私たちはホット・デプロイ時にpermgenスペースがなくなるという問題がありました。 DBドライバの更新には、いくつかの既知の問題がありますが、これはまれにしか行いません。 ManagementBeanのものは間違いなくハッキリに見えますが、私はそれを調べて何が思いつくのか見ていきます。ありがとう。 – user108983

+3

私が周りにいた限り、ホットデプロイメントに関連するpermgenリークがありました。 – Jared

関連する問題