我无法将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连接。
我使用的服务网址为service:jmx:rmi://192.168.99.100:8686/jndi/rmi://192.168.99.100:8686/jmxrmi
,我已通过安全凭据但无法连接。我错过了什么吗?
答案 0 :(得分:2)
遇到同样的问题。
将以下内容添加到server-config - > 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可以连接。从Ur主机的角度来看, e15295161718 对JVisualVM来说是垃圾。
答案 1 :(得分:0)
因此,Docker文件不会公开端口8686 您需要使用--publish 8686:8686 with docker run命令将该端口暴露给主机。有关泥潭的详细信息,请参阅docker help run。