Tomcat 6,JMX和动态端口问题

Mar*_*ert 11 java monitoring tomcat jmx tomcat6

在阅读并尝试了很多之后,我不得不问是否有人能解决我的问题.

我试图在防火墙后面设置一些Tomcats(V6).这没什么大不了的 - 但我想通过JMX监控它们.

我阅读了TC文档并遇到了JMXRemoteLifecycleListener.我的测试TC安装完全按照上面的链接设置.因此,我没有从我们网络中的一个主机到另一个主机的连接.此外,每次启动TC时都会打开第三个随机端口.

在我的server.xml中,监听器被激活

<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"
rmiRegistryPortPlatform="8050" rmiServerPortPlatform="8060" />
Run Code Online (Sandbox Code Playgroud)

catalina.out说一切都好.

2011-06-14 16:46:48,819 [main] INFO org.apache.catalina.mbeans.JmxRemoteLifecycleListener-
The JMX Remote Listener has configured the registry on port 8050 and the server on port 8060 for the Platform server
Run Code Online (Sandbox Code Playgroud)

端口是开放的,我可以通过telnet从任何其他主机连接到它们.我可以用(service:jmx:rmi://<hostname>:8xxx/jndi/rmi://<hostname>:8xxxx/jmxrmi)本地连接到vm

Netstats输出如下:

tcp6       0      0 :::8080                 :::*                    LISTEN      11291/java
tcp6       0      0 :::8050                 :::*                    LISTEN      11291/java
tcp6       0      0 :::8060                 :::*                    LISTEN      11291/java
tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      11291/java
tcp6       0      0 :::60901                :::*                    LISTEN      11291/java
tcp6       0      0 127.0.0.1:8009          :::*                    LISTEN      11291/java
Run Code Online (Sandbox Code Playgroud)

Tomcat甚至已经启动了所有足够的VM选项

CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=TRUE 
-Dcom.sun.management.jmxremote.password.file=$CATALINA_HOME/conf/jmxremote.password
-Dcom.sun.management.jmxremote.access.file=$CATALINA_HOME/conf/jmxremote.access"
Run Code Online (Sandbox Code Playgroud)

有没有人暗示我为什么被困在这里?提前致谢!

Mar*_*ert 14

答案是-Djava.rmi.server.hostname=xxx.xxx.xxx.xxx提供一般的JMX选项.

自动设置主机名的示例:

IP=`ifconfig eth0  | grep 'inet '| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'``;

CATALINA_OPTS="-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=TRUE
-Dcom.sun.management.jmxremote.password.file=$CATALINA_HOME/conf/jmxremote.password
-Dcom.sun.management.jmxremote.access.file=$CATALINA_HOME/conf/jmxremote.access
-Djava.rmi.server.hostname=$IP"
Run Code Online (Sandbox Code Playgroud)