在防火墙后面使用JMX连接到远程JBoss

问题描述 投票:2回答:2

我已将以下属性添加到我的JBOSS EAP 6.2服务器;

   JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote"
   JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=9999"
   JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false"
   JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false"
   JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=94.5.19.27"

并重新启动了jboss。当我尝试使用JVisualVM(94.5.19.27:9999)中的JMX字符串中的以下连接到实例时,我收到以下错误消息

有谁知道我可能需要通过哪些其他配置?

谢谢

编辑是否是防火墙问题 - 这将返回如下;

[secondstory_dev@secondstory1d log]$ netstat -na | grep 9999
tcp6       0      0 127.0.0.1:9999          :::*                    LISTEN
java jboss jmx jvisualvm
2个回答
3
投票

让rmi在防火墙后面工作有一个技巧。 rmi使用两个端口,如果您不指定两个端口,则它不能通过防火墙工作。好的部分是你可以为两个端口使用相同的端口。令人讨厌的是,这不是默认功能。更糟糕的是,直到jdk 7,没有办法使用命令行配置jmx来执行此操作。假设你在jdk 7+上运行,你需要添加这个参数:

-Dcom.sun.management.jmxremote.rmi.port=9999

更多细节在这里http://realjenius.com/2012/11/21/java7-jmx-tunneling-freedom/


0
投票

您需要添加选项:

-Dcom.sun.management.jmxremote.local.only=false

重新启动时,当您运行“netstat”时,您可以看到该端口仅对localhost不打开:

$ netstat -na | grep 9999 tcp6 0 0 :::9999 :::* LISTEN

最后,您可以使用telnet进行验证:

telnet 94.5.19.27 9999

如果您无法连接,则可能需要在linux中查看防火墙:

firewall-cmd --permanent --add-port=9999/tcp

我希望这对你有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.