3

Tomcat が (Windows Tomcat インストーラーを使用して作成された) Windows サービスとして実行される場合、単純に を使用して JMX を有効にすることはできません-Dcom.sun.management.jmxremote。も設定する必要があります-Dcom.sun.management.jmxremote.port=<port>。これは、とりわけ、ここで説明されています: Unable to use JConsole with Tomcat running as windows service

ただし、なぜこれがそうなのかについての説明はどこにも見つかりませんでした。

4

1 に答える 1

1

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

サービス構成の JVM 設定を単純に設定-Dcom.sun.management.jmxremoteすると、JMX実際に有効になります。同じ JVM インスタンスで実行される JMX クライアントがある場合 (たとえば、アプリケーション自体に焼き付けられているため)、次のMBeanServerようなものを取得できますMBeanServerFactory.findMBeanServer(<specific-agent-ID-or-null>)。ただし、JConsole はこの Tomcat プロセスをリストしません。ここですべて説明されています: https://blogs.oracle.com/nbprofiler/entry/monitoring_java_processes_running_as

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

JMXServiceURL target = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:<port>/jmxrmi");
JMXConnector connector = JMXConnectorFactory.connect(target);
connector.getMBeanServerConnection();
于 2012-05-04T20:53:49.730 に答える