JMX:无法从Windows框连接到Linux系统上的JMX端口

dja*_*fan 4 java jmx remote-debugging

我有很多与jconsole.exe和JVisualVM.exe经验,在JDK1.6及以上已连接数千次从Windows JVM到Windows JVM通过JMX.remote另一台机器上,但是当我尝试监视失败一个在Linux主机上运行的java实例(来自Windows主机,我在redhat上尝试了JMX监听器,在Amazon EC2上尝试了SUSE).我也尝试使用jconsole.exe并得到类似的错误.

是否有任何人可以想到的原因,为什么这种JMX连接会有问题.我可以尝试任何想法吗?有没有人"实际"做到这一点,可以说如果我坚持下去会有效吗?

我从JVisualVM获得的错误(在远程连接尝试中)是这样的:

"Cannot connect using service:jmx:rmi:///jndi/rmi://<jmx service ip>:8001/jmxrmi"
Run Code Online (Sandbox Code Playgroud)

我的远程JMX服务配置是这样的:

 -Dcom.sun.management.jmxremote
 -Dcom.sun.management.jmxremote.port=8001
 -Dcom.sun.management.jmxremote.authenticate=false
 -Dcom.sun.management.jmxremote.hostname=<jmx service ip>
Run Code Online (Sandbox Code Playgroud)

此链接中发现了类似的问题,但它没有回答我的问题.

我确认"iptables"没有作为服务启用而且没有打开,所以我没有成像,有任何类型的防火墙阻塞.此外,Windows和Linux机器都在10.0.0.0私有内部子网上.我能够telnet到端口8001来验证它的存在,并在linux机器上监听它(netstat -ap).

Nic*_*las 6

请参阅系统属性java.rmi.server.hostname.在Linux服务器JVM上,将此系统属性设置为主机的公共IP.然后在您的客户端JMX URL中使用公共IP.