web-dev-qa-db-ja.com

Windowsサービスとして実行されているTomcatでJConsoleを使用できません

私はTomcat6.0.18をWindowsサービスとして実行しています。サービスアプレットでは、jvmはデフォルトで構成されています。つまり、JREのjvm.dllを使用しています。

JConsoleでこのアプリケーションを監視しようとしていますが、ローカルで接続できません。パラメータ-Dcom.Sun.management.jmxremoteを追加しました(これは、start.batスクリプトを使用してTomcatを起動するときに機能します)。しかし、jvmはパラメータを取得していないようです。

21
Kees de Kooter

オプションを編集するための優れたGUIがあり、レジストリをいじくり回す必要はありません。

C:\ Program Files\Apache Software Foundation\Tomcat 6.0\bin\Tomcat6.exeを開きます(またはタスクバーのモニターアイコンをダブルクリックします)。 Javaペインに移動し、引数のリストに以下を追加して、Tomcatを再起動します。

-Dcom.Sun.management.jmxremote 
-Dcom.Sun.management.jmxremote.port = 8086 
-Dcom.Sun.management.jmxremote.ssl = false 
-Dcom.Sun.management.jmxremote.authenticate = false 

その後、JConsoleまたは新しいVisualVMに接続できます。

30
Ed Thomas

Jvmoptionsを変更してサービスを操作するための規定の方法は次のとおりです。

http://Tomcat.Apache.org/Tomcat-5.5-doc/windows-service-howto.html

HKLM/Software/Apache Software Foundation/Procrun 2.0 // Parameters/Javaのレジストリにアクセスして、「Options」マルチストリング値を直接編集してみます。

3
Ron

JConsoleをJavaプロセスは私が発見したローカルモードを使用してWindowsサービスとして開始されました ここ )に接続するかなり簡単な方法がまだあります。

基本的に、Windowsサービスとして起動されたJavaプロセスに接続するには、JConsoleをWindowsサービスとして起動する必要があります(WindowsネイティブAPIを使用するか、-のようなラッパーを使用して接続できます)。 yajsw 。)

ちなみに、これにより、私にとって重要だったJavaプロセスを再起動する必要がなくなります。

2
Andrei

私は主にこの情報を自分自身に記録するために投稿していますが、検証はしていませんが、これも機能するはずです:

http://mysqlandsqlserver.blogspot.com/2010/02/jconsolejmap-and-Tomcat-as-windows.html

2
ripper234

TomcatがWindowsサービスとして実行されていて、JVMにローカルに接続する場合は、システムアカウントとしてVisualVMまたはJConsoleを実行する必要があります。 Sysinternals PsExec.exe を使用してこれを実行できます。

psexec.exe -i -s c:\visualvm\bin\visualvm.exe
1
Patrick

Catalina.batの上部近くに以下を追加します

set Java_OPTS=%Java_OPTS% -Dcom.Sun.management.jmxremote ^
    -Dcom.Sun.management.jmxremote.port=8086 ^
    -Dcom.Sun.management.jmxremote.ssl=false ^
    -Dcom.Sun.management.jmxremote.authenticate=false

Tomcatを停止して再起動します(明らかに)

Jconsole.exeを実行します。 Tomcatがサービスとして実行されている場合は、jconsole.exeを管理者として実行します。

リモートプロセスを選択し、localhost:8086と入力します

1
Ross Attrill