有什么方法可以使jconsole仅通过9999连接或使用代理?是这篇文章仍然是最好的解决方案?还是我错过了什么?
是的,那篇文章是对的。
当您在服务器(
-Dcom.sun.management.jmxremote.port=####)上指定JMX端口时,实际上 是
在为应用程序指定注册表端口。当您连接时,它提供了一个额外的服务器端口,jconsole实际上可以完成其所有工作。若要转发给工作,你需要知道 这两个
注册表和服务器端口。
在将注册表端口和服务器端口都设置为8000的情况下,运行以下应用程序可以运行您的应用程序。有关更多详细信息,请参见此处。
-Dcom.sun.management.jmxremote.port=8000-Dcom.sun.management.jmxremote.rmi.port=8000-Djava.rmi.server.hostname=127.0.0.1
顺便说一句,我的SimpleJMX库允许您轻松设置两个端口,并且可以将它们设置为相同的端口。
因此,一旦您知道需要转发的两个端口,就可以设置
ssh命令。例如,如果将注册表和服务器端口配置为8000,则可以执行以下操作:
ssh -L 8000:localhost:8000 remote-host
这将创建一个本地端口8000,该端口转发到远程主机上的localhost:8000。
-L如果需要转发多个端口,则可以指定多个参数。然后,您可以将jconsole连接到localhost:8000,它将适当地连接到远程主机。
另外,如果您的服务器具有多个接口,则可能需要设置
java.rmi.server.hostname变量以绑定到正确的接口。
-Djava.rmi.server.hostname=10.1.2.3



