首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >远程JMX连接

远程JMX连接
EN

Stack Overflow用户
提问于 2009-05-07 13:12:40
回答 12查看 210.6K关注 0票数 103

我正在尝试打开一个JMX连接到在远程机器上运行的java应用程序。

应用程序JVM使用以下选项进行配置:

  • com.sun.management.jmxremote
  • com.sun.management.jmxremote.port=1088
  • com.sun.management.jmxremote.authenticate=false
  • com.sun.management.jmxremote.ssl=false

我可以通过jconsole或jvisualvm使用localhost:1088进行连接。但我无法从远程机器使用xxx.xxx.xxx.xxx:1088进行连接。

服务器之间或操作系统上没有防火墙。但是为了消除这种可能性,当控制台屏幕变成空白时,我使用telnet xxx.xxx.xxx.xxx 1088,我认为它是连接的。

这两台服务器都是Windows Server2008 x64。尝试使用64位JVM和32位,两者都不起作用。

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2009-05-07 13:31:17

如果是在Linux上,问题将是本地主机是环回接口,您需要应用程序来绑定到您的网络接口。

您可以使用netstat确认它未绑定到预期的网络接口。

通过使用系统参数java.rmi.server.hostname="YOUR_IP"调用程序,可以将其作为环境变量进行调用,也可以使用

代码语言:javascript
复制
java -Djava.rmi.server.hostname=YOUR_IP YOUR_APP
票数 123
EN

Stack Overflow用户

发布于 2012-07-26 00:24:48

我花了一天多的时间试图让JMX在本地主机之外工作。SUN/Oracle似乎未能就此提供一个很好的文档。

确保以下命令返回真实的IP或主机名。如果它返回127.0.0.1、127.0.1.1或localhost之类的内容,它将无法工作,您将不得不更新/etc/hosts文件。

代码语言:javascript
复制
hostname -i

以下是即使从外部启用JMX所需的命令

代码语言:javascript
复制
-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.port=1100
-Djava.rmi.server.hostname=myserver.example.com

其中,正如您假设的那样,myserver.example.com必须与hostname -i返回的内容匹配。

显然,您需要确保防火墙不会阻止您,但我几乎可以肯定这不是您的问题,问题是最后一个参数没有记录在案。

票数 69
EN

Stack Overflow用户

发布于 2016-10-06 02:14:05

在我使用Tomcat和Java 8进行测试时,除了为JMX指定的端口之外,JVM还打开了一个临时端口。下面的代码修复了我的问题;如果你的JMX客户端有问题(例如,VisualVM没有连接),可以试一试。

代码语言:javascript
复制
-Dcom.sun.management.jmxremote.port=8989
-Dcom.sun.management.jmxremote.rmi.port=8989

另请参阅Why Java opens 3 ports when JMX is configured?

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

https://stackoverflow.com/questions/834581

复制
相关文章

相似问题

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