java - JMX : cant connect from Windows box to monitor JMX port on a Linux system

标签 java jmx remote-debugging

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

有没有人能想到,为什么这种 JMX 连接会出现问题。我可以尝试任何想法吗?有没有人“实际”做到了这一点,并且可以说如果我坚持不懈,它就会奏效?

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

"Cannot connect using service:jmx:rmi:///jndi/rmi://<jmx service ip>:8001/jmxrmi"

我的远程 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>

this link 发现了类似的问题但它没有回答我的问题。

我确认“iptables”未作为服务启用且未打开,因此我不认为存在任何类型的防火墙阻塞。此外,windows 和 linux 机器都在一个 10.0.0.0 私有(private)内部子网上。我能够远程登录到端口 8001 以验证它在那里,以及它在 linux 机器上的监听 (netstat -ap)。

最佳答案

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

关于java - JMX : cant connect from Windows box to monitor JMX port on a Linux system,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5383235/

相关文章:

java - Flow.js和Java Servlet上传文件0字节

java - 在单元测试中是否有替代模拟对象的方法?

java - 如何阅读 Java 中的冰冷协议(protocol)?

java - 如何在Activemq中暂停队列

android - 在云中开发,但通过远程桌面通过 USB 在本地设备上调试 Android 应用程序

java - 序列化一个 java.awt.geom.Area

spring-boot - 如何通过全局启用的惰性初始化通过 JMX 使 Spring Boot Actuator 可用?

java - 我可以使用 kerberos 在 jconsole 上进行身份验证吗?

android - 无法打开选定的 VM 调试端口 (8700)

c++ - 远程调试 session 期间出现 Eclipse 错误 : sh: locale: not found