我在 Centos6 上使用 JDK7 运行 Tomcat7。 我使用以下选项启用 JMX:
CATALINA_OPTS="${CATALINA_OPTS} -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9123 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.local.only=true"
不幸的是,当我检查打开了哪些端口时,我发现了 2 个额外的随机端口:
netstat -plunt | grep java
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 :::60555 :::* LISTEN 22752/java
tcp 0 0 ::ffff:127.0.0.1:8080 :::* LISTEN 22752/java
tcp 0 0 :::9123 :::* LISTEN 22752/java
tcp 0 0 :::40867 :::* LISTEN 22752/java
我想 JMX 应该多开一个端口 JMX enabled Java application appears to open a random high order port when JMX client connects
为什么 Tomcat 中的 JMX 多开 2 个端口?
如何配置这些端口?
如果我配置 -Dcom.sun.management.jmxremote.local.only=true
是否意味着其他端口也可以仅使用本地访问来访问?
如何配置 ::ffff:127.0.0.1
出现在 JMX 打开的所有端口之前?
最佳答案
您可以使用 Tomcat 的 JMX Remote Lifecycle Listener这允许修复 JMX/RMI 服务器使用的端口。
JMX 远程生命周期监听器允许配置以下端口:
rmiRegistryPortPlatform
- JMX/RMI 注册表使用的端口 对于平台 MBean。应该使用这个代替com.sun.management.jmxremote.port
系统属性rmiServerPortPlatform
- 要使用的端口 通过平台 JMX/RMI 服务器。
此外,您可以配置 useLocalPorts
属性 - 如果使用这些端口的任何客户端都必须使用本地端口连接到 JMX/RMI 服务器。
请注意,此监听器需要将 catalina-jmx-remote.jar
放在 $CATALINA_HOME/lib
中。这个jar可以在二进制下载区的extras目录中找到。
关于java - 启用 JMX 的 Tomcat7 打开 2 个额外的随机监听端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20699068/