我在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
意味着只能使用本地访问来访问其他端口吗?
如何在JMX打开的所有端口之前配置::ffff:127.0.0.1
?
答案 0 :(得分:1)
您可以使用Tomcat的JMX Remote Lifecycle Listener来修复JMX / RMI服务器使用的端口。
JMX Remote Lifecycle Listener允许配置以下端口:
rmiRegistryPortPlatform
- JMX / RMI注册表使用的端口
对于平台MBean。应该使用这个而不是com.sun.management.jmxremote.port
系统属性rmiServerPortPlatform
- 要使用的端口
通过Platform JMX / RMI服务器。在附加中,您可以配置useLocalPorts
属性 - 是否应强制使用这些端口的任何客户端使用本地端口连接到JMX / RMI服务器。
请注意,此侦听器需要catalina-jmx-remote.jar
放置在$CATALINA_HOME/lib
中。这个jar可以在二进制下载区的extras目录中找到。