我无法将 JVisualVM 连接到在 Docker 上运行的 Glassfish。我正在使用glassfish nightly image我公开了端口 8686。在启动时,Glassfish 正在记录以下内容:
JMXStartupService has started JMXConnector on JMXService URL service:jmx:rmi://55bbdd404578:8686/jndi/rmi://55bbdd404578:8686/jmxrmi
我的docker主机的IP是192.168.99.100,我可以通过端口8686上的telnet连接。
我使用的服务 URL 是 service:jmx:rmi://192.168.99.100:8686/jndi/rmi://192.168.99.100:8686/jmxrmi
我正在传递安全凭证但无法连接。我错过了什么吗?
最佳答案
遇到同样的问题。
将以下内容添加到服务器配置 –> jvm-settings –> JVM 选项
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port='your JMX port'
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname='IP of you docker host'
然后按照之前的方式完成其余的操作。
当你查看 server.log 时,你会注意到 JMX 服务公开为:
JMXStartupService has started JMXConnector on JMXService URL service:jmx:rmi://e15295161718:40086/jndi/rmi://e15295161718:40086/jmxrmi
并且可能这些配置条目将 e15295161718 更改为 IP 并且 JVisualVM 可以连接。从主机的角度来看,e15295161718 对于 JVisualVM 来说是垃圾。
关于java - 使用 JVisualVM 监控 Docker 上的 Glassfish 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32318344/