2012-05-03 17 views
3

Tomcatが(Windows Tomcatインストーラを使用して作成された)Windowsサービスとして実行されている場合、-Dcom.sun.management.jmxremoteを使用してJMXを有効にすることはできません。 -Dcom.sun.management.jmxremote.port=<port>も設定する必要があります。これは、他の場所の中で、ここで説明されています:Unable to use JConsole with Tomcat running as windows serviceTomcatがWindowsサービスとして動作する場合、ローカルMBeanServerが存在しないのはなぜですか?

しかし、私はそれがどこにあるのか説明が見つかりませんでした。

+0

これはローカルシステム管理者グループのユーザーを含むすべてのユーザーに当てはまりますか? –

+0

ご意見ありがとうございます。答え:はい、一種です。私はこれを掘り起こすいくつかのことを学んだので、私自身の質問に答えます。 –

答えて

1

質問を書いたとき、少し失われて混乱しました。その間に私が学んだことがここにあります。通常、Tomcat Windowsサービスはローカルシステムアカウントで実行されます。それがすべての大騒ぎの主な理由です。

サービス設定のJVM設定で-Dcom.sun.management.jmxremoteと設定するだけで、JMX となります。同じJVMインスタンスで実行されるJMXクライアントがある場合(つまり、アプリケーション自体に焼き込まれているため)、のようにMBeanServerを保持できます。ただし、JConsoleはこのTomcatプロセスをリストしません。ここではすべて説明します:https://blogs.oracle.com/nbprofiler/entry/monitoring_java_processes_running_as

他のところで説明したように、これで十分でない場合は、-Dcom.sun.management.jmxremote.port=<port>も設定する必要があります。次に、localhost:<port>を使用してJConsoleを使用してJMXに接続できます。 Javaコードからは、次のコードを使用してこれを実現できます。

JMXServiceURL target = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:<port>/jmxrmi"); 
JMXConnector connector = JMXConnectorFactory.connect(target); 
connector.getMBeanServerConnection(); 
関連する問題