我在 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/