[英]Tomcat 6, JMX and the dynamic port problem
在閱讀並嘗試了很多之后,我不得不問是否有人可以解決我的問題。
我正在嘗試在防火牆后面設置一些 Tomcat(V6)。 這沒什么大不了的——但我想通過 JMX 監控它們。
我閱讀了 TC 文檔並遇到了JMXRemoteLifecycleListener 。 我的測試 TC 安裝完全按照上面鏈接中的說明進行設置。 因此,我沒有從我們網絡中的一台主機到另一台主機的連接。 此外,每次我啟動 TC 時,都會打開第三個隨機端口。
在我的 server.xml 中,監聽器被激活
<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"
rmiRegistryPortPlatform="8050" rmiServerPortPlatform="8060" />
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
端口是開放的,我可以從任何其他主機通過 telnet 連接到它們。 我可以使用( service:jmx:rmi://<hostname>:8xxx/jndi/rmi://<hostname>:8xxxx/jmxrmi
)在本地連接到虛擬機
Netstats output如下:
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
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"
有沒有人暗示我為什么被困在這里? 提前致謝!
答案是將-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"
問題可能是在啟用 jmx 監控時 java 本身打開的第二個隨機端口。 從 Java 7 開始,也可以設置此端口:
-Dcom.sun.management.jmxremote.rmi.port=7091
所以結合起來 - 可以使用相同的端口:
-Dcom.sun.management.jmxremote.port=7091 -Dcom.sun.management.jmxremote.rmi.port=7091
這就是我的問題的解決方案。 一旦端口設置為固定編號,就可以在防火牆中輕松設置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.