我在 Spring3.1 独立环境下开发。

我正在尝试通过 jconsole 远程连接我的应用程序。
它在本地工作,但是当我将应用程序部署到 linux 机器时,它会超时。

我正在使用 Daemon 来运行我的环境。

这是我在 run.sh 脚本中添加的内容:

-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=6969 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false \
com.mypackage.daemon.FixDaemon

在 applicationContext.xml 中:
<context:mbean-server />
<context:mbean-export />

现在在执行 netstat 之后的 linux 机器上,我们看到的是:
[root@ logs]# netstat -an | grep 6969
tcp        0      0 :::6969                     :::*                        LISTEN

所以它似乎确实在听。

但是当我在 jconsole 界面中添加我的 ip:6969 时,我得到了连接失败的弹出窗口。

知道我做错了什么吗?

谢谢,
射线。

最佳答案

首先尝试将此选项添加到您的应用程序中:
-Djava.rmi.server.hostname=<ip>
还要记住 jconsole 使用 RMI 进行通信。这意味着 jconsole 首先连接到 ip:6969。然后服务器生成一个随机端口 X,它被传递回 jconsole。 Jconsole 然后打开另一个到 ip:X 的连接。由于 X 是随机的,因此您无法在防火墙中打开此特定端口。您必须打开所有端口或使用另一个主题的 socks 代理。

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

10-10 17:33