2012-05-03 34 views
3

如果Tomcat作爲Windows服務運行(使用Windows Tomcat安裝程序創建),則不能簡單地使用-Dcom.sun.management.jmxremote啓用JMX。您還需要設置-Dcom.sun.management.jmxremote.port=<port>。這是,除其他地方,在這裏解釋:Unable to use JConsole with Tomcat running as windows service如果Tomcat作爲Windows服務運行,爲什麼沒有本地MBeanServer?

但是,我沒有找到任何解釋爲什麼這是它的方式。

+0

這對所有用戶都是如此,包括本地系統管理員組中的用戶? –

+0

感謝您的評論。答:是的,有點。我會回答我自己的問題,因爲我已經瞭解了一些挖掘這一點的東西。 –

回答

1

當我寫這個問題時,我有點迷茫和困惑。這是我在此期間學到的。通常,Tomcat Windows服務在本地系統帳戶下運行。這是所有大驚小怪的主要原因。

如果您只是在服務配置的JVM設置中設置-Dcom.sun.management.jmxremote JMX 的確會啓用。如果您有一個運行在相同JVM實例中的JMX客戶端(例如,因爲它已經被加入到應用程序本身中),您可以像這樣獲得MBeanServerMBeanServerFactory.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>。然後,您可以使用localhost:<port>通過JConsole連接到JMX。從Java代碼可以實現:

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