當我寫這個問題時,我有點迷茫和困惑。這是我在此期間學到的。通常,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>
。然後,您可以使用localhost:<port>
通過JConsole連接到JMX。從Java代碼可以實現:
JMXServiceURL target = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:<port>/jmxrmi");
JMXConnector connector = JMXConnectorFactory.connect(target);
connector.getMBeanServerConnection();
這對所有用戶都是如此,包括本地系統管理員組中的用戶? –
感謝您的評論。答:是的,有點。我會回答我自己的問題,因爲我已經瞭解了一些挖掘這一點的東西。 –