我尝试使用以下代码从java客户端建立与tomcat实例的JMX连接。
JMXServiceURL url = new MXServiceURL("service:jmx:jmxmp://<host>:<port>"); //line 1
JMXConnector jmxc = JMXConnectorFactory.connect(url); //line 2
MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();
哪里
host =运行我的tomcat实例的远程机器
port = 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
答案 0 :(得分:3)
要使用JMXMP客户端,您需要运行JMXMP Connector Server。它无法连接到[默认] RMI连接器服务器。
另请参阅此question以获取可安装到正在运行的服务器中的JMXMP代理。