【发布时间】:2012-05-11 00:28:07
【问题描述】:
我在亚马逊云中的 Linux 服务器上运行 Tomcat 6。我正在尝试通过我办公室的 Mac 上的 VisualVM 连接到它。我已允许打开我的桌面和服务器之间的所有 TCP 端口,但我无法让 VisualVM 执行任何操作。
在 linux 机器上,我已经启动了 Tomcat:
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9191
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
在我的 Mac 上,我启动 VisualVM 并选择 File -> New JMX Connection...
我在框中输入 amazonhostname.com:9191。它显示“正在添加 amazonhostname.com:9191...”,并在此处停留了几分钟,然后超时。
在我的 Mac 上,我可以“telnet amazonhostname.com 9191”就好了,我尝试了其他一些随机端口,它们都可以正常工作。我很确信这不是防火墙问题,除非我需要打开 UDP 或 ICMP 或类似的东西。 (真的吗??)
服务器上的 catalina.log 或我的 Mac 上的系统控制台中没有任何与 jmx 相关的内容。服务器上的 netstat 显示 9191 和所有接口上打开的其他一些端口。
远程服务器上没有 jstatd。这是 JMX 的先决条件吗? (我对 Java 完全陌生,我什至不确定这些东西是什么意思,但我在某处的博客文章中看到了它。我现在正抓着稻草。)
【问题讨论】:
-
您确定 iptables 没有阻止您的 linux 机器上的连接吗?编辑:我看到你可以远程登录 - 好吧,从头开始。
-
您需要查看的另一件事是 RMI 主机名 - 看看:stackoverflow.com/questions/9985293/…
-
不需要Jstatd。正如 Greg 建议的那样,尝试将 -Djava.rmi.server.hostname=the.public.ip 添加到 Tomcat JVM 参数中。
-
感谢 Tomas 和 Greg - rmi.server.hostname 成功了。算我一个!如果你们中的某个人想重写您的评论作为答案,我会接受。
-
@GregKopff 你应该写一个答案