首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jps无法连接到远程jstatd

jps无法连接到远程jstatd
EN

Stack Overflow用户
提问于 2011-02-02 01:10:02
回答 2查看 9.4K关注 0票数 13

我正在尝试使用jstatd使用jps查询远程JVM,以便最终使用VisualVM监视它。

我使用以下安全策略运行jstatd:

代码语言:javascript
复制
grant codebase "file:${java.home}/../lib/tools.jar" {

    permission java.security.AllPermission;
};

jstatd在64位Linux机器上运行,安装了1.6.0_10版本的HotSpot虚拟机。jstatd命令为:

代码语言:javascript
复制
jstatd -J-Djava.security.policy=jstatd.tools.policy -J-Djava.rmi.server.logCalls=true

我正在尝试从Windows7机器上运行jps。由于防火墙的限制,我通过SSH隧道将RMI数据通过隧道传输到我的Windows计算机,因此jps命令行是:

代码语言:javascript
复制
 .\jps.exe -m -l rmi://localhost

当我运行jps时,我在jstatd日志中看到连接尝试,如下所示:

代码语言:javascript
复制
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端,我得到了以下错误:

代码语言:javascript
复制
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获取统计数据?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-02 01:39:08

我的猜测是,您只转发了RMI注册端口(1099),但您还需要打开另一个端口。

检查远程端的哪些端口

代码语言:javascript
复制
# netstat -nap | grep jstatd

tcp        0      0 :::1099     :::*       LISTEN      453/jstatd          
tcp        0      0 :::58204    :::*       LISTEN      453/jstatd          

在这种情况下,您需要转发端口58204和1099

票数 12
EN

Stack Overflow用户

发布于 2016-11-03 22:41:09

以下是您可以轻松完成此操作的方法。

  1. 以这种方式在远程主机中启动ejstatd (从ejstatd文件夹中执行):mvn exec:java -Dexec.args="-pr 2000 -ph 2001 -pv 2002"
  2. Open远程主机上的3个端口并使它们可用于本地计算机:20012002
  3. On和<remotehost>本地计算机,您将能够使用jps用远程主机名替换<remotehost>

免责声明:我是开源ejstatd工具的作者

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4865650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档