Tomcat 6, JMX и проблема динамического порта
прочитав и попробовав много вокруг, я должен спросить, есть ли у кого-нибудь решение моей проблемы.
Я пытаюсь настроить некоторые Tomcats (V6) за брандмауэром. Это не имеет большого значения , но я хочу отслеживать их через JMX.
Я прочитал TC docu и наткнулся на JMXRemoteLifecycleListener. Моя тестовая установка TC настроена точно так, как указано в приведенной выше ссылке. Таким образом, я не получаю соединение от одного хоста в нашей сети к другому. Дополнительно в-третьих, случайный порт открыт каждый раз, когда я запускаю TC.
на моем сервере.xml прослушиватель активирован
<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"
rmiRegistryPortPlatform="8050" rmiServerPortPlatform="8060" />
Каталина.аут говорит, что все в порядке.
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 выглядит следующим образом:
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"
у кого-нибудь есть подсказка, почему я застрял здесь? Заранее спасибо!
2 ответов
ответ ставишь -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 }'``;
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"
проблема возможно, второй случайный порт, открытый самой java при включении мониторинга jmx. Начиная с Java 7 этот порт также может быть установлен:
-Dcom.sun.management.jmxremote.rmi.port=7091
Так в комбинации-такой же порт можно использовать:
-Dcom.sun.management.jmxremote.port=7091 -Dcom.sun.management.jmxremote.rmi.port=7091
Это было решение моей проблемы. Как только порт установлен на фиксированный номер, его можно легко установить в брандмауэре.