我正在尝试使用以下代码从 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();
在哪里
主机 = 运行我的 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