我希望能够远程连接到暴露了JMX的Java服务,但是它被防火墙阻止了.我曾尝试使用ssh本地端口转发,但连接失败.看看wireshark,看来当你尝试连接jconsole时,它想要在连接到被防火墙阻止的端口9999之后通过一些短暂的端口连接.
有没有办法让jconsole只通过9999连接或使用代理?是这篇文章仍然是最好的解决办法?或者,我错过了什么?
我在亚马逊云的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
Run Code Online (Sandbox Code Playgroud)
在我的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完全不熟悉,我甚至不确定那些东西是什么意思,但我在某个博客文章中看到过.我现在正在抓住稻草.)