0

我正在尝试使用以下代码从 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

4

1 回答 1

3

为了使用 JMXMP 客户端,您需要运行JMXMP 连接器服务器。它无法连接到 [default] RMI 连接器服务器。

另请参阅此问题,了解可以安装到正在运行的服务器中的 JMXMP 代理。

于 2016-04-21T13:42:57.357 回答