当使用Docker运行进程时,为什么很难连接到JMX端口(使用JConsole)。

当然,我让将JMX端口暴露给了主机,甚至在运行Java进程时使用了 Sun特定的选项(按照http://ptmccarthy.github.io/2014/07/24/remote-jmx-with-docker/的说明进行操作)。

我可以远程登录到主机ip和公开的JMX端口,这表明该端口可访问。但是我想不通一种使用JConsole并连接到容器中运行的JMX服务的方法。

-Djava.rmi.server.hostname=$JMX_HOSTNAME
-Dcom.sun.management.jmxremote.port=$JMX_PORT
-Dcom.sun.management.jmxremote.rmi.port=$JMX_PORT

最佳答案

过去,两个端口必须不同。请尝试一下。

如果那不起作用:

Tomcat提供了一个附加组件来设置提到的第二个端口 JMX远程生命周期侦听器

请看一下:

http://tomcat.apache.org/tomcat-7.0-doc/extras.html

http://tomcat.apache.org/download-70.cgi

我将此设置与tomcat / lib目录中的catalina-jmx-remote.jar一起使用来通过:

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=localhost
-DrmiRegistryPortPlatform=10381
-DrmiServerPortPlatform=10380

加上这些,但是在开发环境中您将不需要它们。
-Dcom.sun.management.jmxremote.password.file=/home/tomcat/jmxremote.password
-Dcom.sun.management.jmxremote.access.file=/home/tomcat/jmxremote.access
-Dcom.sun.management.jmxremote.authenticate=true

关于java - 如何从Docker容器中运行的进程访问JMX(Java Beans),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28060115/

10-16 06:02