2016-04-21 75 views
0

我試圖使用下面的代碼建立一個從java客戶端到我的tomcat實例的JMX連接。使用JMXMP的JMX連接掛起

JMXServiceURL url = new MXServiceURL("service:jmx:jmxmp://<host>:<port>"); //line 1 
JMXConnector jmxc = JMXConnectorFactory.connect(url); //line 2 
MBeanServerConnection mbsc = jmxc.getMBeanServerConnection(); 

主機在我的Tomcat實例運行

端口= JMX啓用的端口=遠程計算機。在我的代碼是9840

我的Tomcat setenv.sh文件與下面的配置修改,以使JMX

export CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9840 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false" 

但是,當我執行程序,它掛在第2行

如果我將第1行更改爲 JMXServiceURL target = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://<host>:<port>/jmxrmi") 以使用RMI而不是JMXMP,它會執行並且我可以訪問各種MX Bean。

所以,我不能連接,如果我使用JMXMP協議。如果我使用RMI協議,我可以連接。當我使用JMXMP時可能會出錯?

感謝, NKS

回答

3

爲了使用JMXMP客戶端,你需要運行的JMXMP Connector Server。它無法連接到[默認] RMI連接器服務器。

另請參閱此question瞭解可以安裝到正在運行的服務器中的JMXMP代理。

+0

看起來像tomcat沒有按照線程對JMXMP的本機支持http://stackoverflow.com/questions/11413178/how-to-enable-jmxmp-in-tomcat。該線程建議創建一個'LifecycleListener'來啓用tomcat JMXMP。有沒有辦法通過一些配置條目來實現這一點,如JMX-RMI的情況? – user957183