启用了JMX的Tomcat7会打开2个额外的随机侦听端口
我在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启用的Java应用程序似乎在JMX客户端连接时打开一个随机的高阶端口
为什么Tomcat中的JMX会打开2个额外的端口?
如何配置这些端口?
如果我配置-Dcom.sun.management.jmxremote.local.only=true
意味着只能使用本地访问来访问其他端口?
如何配置::ffff:127.0.0.1
将出现在JMX打开的所有端口之前?
您可以使用Tomcat的JMX远程生命周期监听器 ,它允许修复JMX / RMI服务器使用的端口。
JMX Remote Lifecycle Listener允许配置以下端口:
-
rmiRegistryPortPlatform
– JMX / RMI注册表用于Platform MBean的端口。 应该使用此方法而不是com.sun.management.jmxremote.port
系统属性 -
rmiServerPortPlatform
– Platform JMX / RMI服务器使用的端口。
在附加中,您可以配置useLocalPorts
属性 – 是否应强制使用这些端口的任何客户端使用本地端口连接到JMX / RMI服务器。
请注意,此侦听器需要将catalina-jmx-remote.jar
放在$CATALINA_HOME/lib
。 这个jar可以在二进制下载区的extras目录中找到。