Java 太平绅士可以';t连接到远程jstatd
我正在尝试使用jstatd使用jps查询远程JVM,以便最终使用VisualVM监控它 我让jstatd使用以下安全策略运行:Java 太平绅士可以';t连接到远程jstatd,java,monitoring,Java,Monitoring,我正在尝试使用jstatd使用jps查询远程JVM,以便最终使用VisualVM监控它 我让jstatd使用以下安全策略运行: grant codebase "file:${java.home}/../lib/tools.jar" { permission java.security.AllPermission; }; jstatd在64位Linux机器上运行,带有1.6.0_10版本的HotSpot vm。jstatd命令是: jstatd -J-Djava.security.po
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
jstatd在64位Linux机器上运行,带有1.6.0_10版本的HotSpot vm。jstatd命令是:
jstatd -J-Djava.security.policy=jstatd.tools.policy -J-Djava.rmi.server.logCalls=true
我正在尝试从Windows7计算机上运行jps。由于防火墙限制,我正在通过SSH隧道将RMI数据传输到我的Windows计算机,因此jps命令行是:
.\jps.exe -m -l rmi://localhost
当我运行jps时,我在jstatd日志中看到连接尝试,如下所示:
Feb 1, 2011 11:50:34 AM sun.rmi.server.UnicastServerRef logCall
FINER: RMI TCP Connection(3)-127.0.0.1: [127.0.0.1: sun.rmi.registry.RegistryImpl[0:0:0, 0]: java.rmi.Remote lookup(ja va.lang.String)]
但在jps方面,我得到了以下错误:
Error communicating with remote host: Connection refused to host: 192.168.1.137; nested exception is:
java.net.ConnectException: Connection refused: connect
根据jstatd日志中列出的连接尝试,我认为jps实际上正在到达主机,但由于某种原因被阻止。是否有我设置的安全策略或其他设置可以更改,以便让jps从远程jstatd获取统计信息?我猜您只是在转发RMI注册表端口(1099),但还需要打开另一个端口 检查远程端的端口
# netstat -nap | grep jstatd
tcp 0 0 :::1099 :::* LISTEN 453/jstatd
tcp 0 0 :::58204 :::* LISTEN 453/jstatd
在这种情况下,您将需要转发端口58204以及1099,以下是您可以轻松做到这一点的方法
mvn exec:java-Dexec.args=“-pr 2000-ph 2001-pv 2002”
2000
、2001
和2002
jps
替换
为远程主机名:jps-m-l rmi://:2000
免责声明:我是开源工具的作者不,那没有帮助。我通过隧道连接到另一个端口,在我的例子中是45998,但是jps仍然无法连接。隧道没有帮助,但是打开了更多的端口。你是对的。谢谢。@afrosteve:您能解释一下您打开了哪些其他端口,以及您隧道了哪些端口吗?可能是因为我没有在要监视的应用程序中设置jmxremote属性,如下所述: