Ошибка входа в Tomcat JMX Services через jconsloe: javax.management.remote.rmi.RMIConnector.connect (RMIConnector.java:281) - PullRequest
1 голос
/ 22 февраля 2011

Мы работаем с Tomcat 6 на RHEL 5 и Oracle JDK 1.6_24, и у меня проблемы с входом в службы jmx удаленно через jconsole.

Вот мой setenv.sh:

JAVA_OPTS="-Xms512m -Xmx1152m -XX:MaxPermSize=512m"
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9888"
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.hostname=192.168.XX.XX"
CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.logCalls=true"

Вот вывод 'ps -elf |grep tomcat '(я также вижу прослушивание порта 9888 при использовании netstat):

0 S root      2930     1  1  85   0 - 500084 184466 20:47 ?       00:00:15 /usr/java/default/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Xms512m -Xmx1152m -XX:MaxPermSize=512m 
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -server -Dbuild.compiler.emacs=true -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9888 -Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.XX.XX -Djava.rmi.server.logCalls=true -Djava.endorsed.dirs=/usr/local/tomcat/endorsed
 -classpath /usr/local/tomcat/bin/bootstrap.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start

Затем при попытке подключиться через jconsole я запускаю следующую команду:

jconsole -debug 192.168.XX.XX: 9888

Выдает следующую ошибку:

java.lang.NullPointerException
at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:281)
at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:228)
at sun.tools.jconsole.ProxyClient.tryConnect(ProxyClient.java:334)
at sun.tools.jconsole.ProxyClient.connect(ProxyClient.java:296)
at sun.tools.jconsole.VMPanel$2.run(VMPanel.java:281)

У меня закончились идеи для отладки, и я не могу найти никаких ответов.Любая мысль или идеи?

В качестве второй проблемы, отключение tomcat не останавливает процесс jmx, и я не могу перезапустить tomcat, так как он все еще слушает 9888. Должен ли я указать что-либо, чтобы остановить процесс JMX во времявыключение?

Спасибо всем

  • Дастин Честерман

Ответы [ 3 ]

2 голосов
/ 17 мая 2011

У меня просто была такая же проблема. Исправление закончилось тем, что я удалил имя хоста из строки 127.0.0.1 моего файла / etc / hosts. Это приводило к тому, что JMX связывался с localhost при создании своего подключения к данным.

1 голос
/ 23 февраля 2011

Эта ссылка поможет, вам нужно указать оба порта. Этот метод позволяет указать оба порта. http://gabenell.blogspot.com/2010/04/connecting-to-jmx-on-tomcat-6-through.html

У меня есть jconsole для подключения без аутентификации, но без аутентификации. Кто-нибудь заставил это работать?

0 голосов
/ 22 февраля 2011

У меня была такая ошибка, когда я настроил iptables на моем сервере.Он заблокировал входящий трафик на этих портах.В моей настройке Tomcat всегда открывал 2 случайных JMX-порта.

Я постараюсь найти мои конфигурационные файлы.

k-deux

...