java - 无法连接到远程 JMX 主机

标签 java linux jmx visualvm

使用 VisualVM,我可以看到有两种类型可以连接远程主机。

  1. jstatd

  2. JMX

所以我尝试使用JMX,我遵循了很多教程,但到目前为止没有运气。

目前,我的桌面和一台运行着 java 服务器应用程序的 Linux 机器。 我正在尝试在桌面上设置 VisualVM 客户端以查看在 Linux 机器上运行的 java 应用程序。

我在 Linux 上的 java 应用程序的 start.sh 脚本中添加了以下 JAVA_OPTS 脚本。

JMX_PORT="-Dcom.sun.management.jmxremote.port=33333"  <-- allowed on firewall
JMX_SSL="-Dcom.sun.management.jmxremote.ssl=false"
JMX_AUTH="-Dcom.sun.management.jmxremote.authenticate=false"
JMX_IP="-Djava.rmi.server.hostname=xx.xx.xx.xx"   <-- where linux box NAT ip.

Linux 上的 Java 应用程序已成功启动,并添加了 jmx 选项 start.sh,我想是因为没有错误或警告。

当我尝试添加 JMX 连接时,它说无法连接到它。

我检查了 33333 是否被阻止,事实并非如此,我能够从桌面使用 telnet 连接到该 IP 的端口。

我还应该为 VisualVM 打开任何其他端口吗?

要使用 JMX,是否需要进行任何其他设置,例如 RMI 注册表服务器或 jstatd 策略文件创建并启动 jstat 守护进程?我认为它仅用于 jstatd 连接,因此我没有继续该教程。

最佳答案

最简单的方法是在服务器和桌面之间使用 openvpn 隧道,而不是摆脱防火墙和 NAT 的东西。我就是这样做的,效果非常好。

关于java - 无法连接到远程 JMX 主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20627673/

相关文章:

java - JaversException PROPERTY_ACCESS_ERROR : error getting value from property 'Method ClassRepository getGenericInfo

Java IE 提供旧的 HTTP Servlet session 对象

linux - 如何使用 Grep 命令查找文本文件中的特定值

tomcat - 如何使用 JMX 从主机连接到 Docker 机器中的 Docker 容器?

tomcat Web 应用程序中的 Java RMI UnmarsharledException

java - 从JList中拖动对象,具有重影效果

java - 根据传递的字符串长度实现Hashcode方法

c++ - 如何在 C 中获取 Linux Flash ROM 的大小?

c - 对C的定时器有一些困惑

java 运行 jmx 禁用操作