启用了JMX的Tomcat7会打开2个额外的随机侦听端口

时间:2013-12-20 08:17:10

标签: java security tomcat7 port jmx

我在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

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目录中找到。