1

我们在 RHEL 5 和 Oracle JDK 1.6_24 上运行 Tomcat 6,我在通过 jconsole 远程登录 jmx 服务时遇到问题。

这是我的 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'(我还看到使用 netstat 时监听 9888 端口):

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-调试 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 进程?

谢谢大家

  • 达斯汀切斯特曼
4

3 回答 3

2

我只是有同样的问题。修复最终是从我的 /etc/hosts 文件的 127.0.0.1 行中删除主机名。这导致 JMX 在创建数据连接时绑定到 localhost。

于 2011-05-17T14:50:47.830 回答
1

此链接将有所帮助,您必须指定两个端口。此方法是指定两个端口的方法。 http://gabenell.blogspot.com/2010/04/connecting-to-jmx-on-tomcat-6-through.html

我已经让 jconsole 在不使用任何身份验证但不使用身份验证的情况下进行连接。有人让这个工作吗?

于 2011-02-22T23:58:46.927 回答
0

当我在我的服务器上配置 iptables 时,我遇到了这种错误。它阻止了这些端口上的传入流量。在我的设置中,Tomcat 总是打开 2 个随机 JMX 端口。

我会尝试找到我的配置文件。

k-deux

于 2011-02-22T20:30:29.663 回答