无法通过 Java6 中的 jconsole 连接到 Tomcat 的 MBeanServer

Jac*_*ine 2 java tomcat administration jmx

我在vista机器上。我已经使用以下选项启动了 tomcat 5.5.27:

CATALINA_OPTS="-Dcom.sun.management.jmxremote.port=9003 \
    -Dcom.sun.management.jmxremote.ssl=false \
    -Dcom.sun.management.jmxremote.authenticate=false"
Run Code Online (Sandbox Code Playgroud)

当我通过 jconsole 连接并添加以下服务 url

service:jmx:rmi:///jndi/rmi://localhost:9003/jmxrmi
Run Code Online (Sandbox Code Playgroud)

它不会连接。有任何想法吗 ?

Dav*_*fer 6

好吧,我原本以为 op 给出的 URL 是错误的,但事实证明没有。所以我无法回答。

不过,这里有一些基础知识:

对于通过jconsole.

例如,如果您知道要连接的 JMX 服务器的RMI 注册端口为 9003,请使用

localhost:9003
Run Code Online (Sandbox Code Playgroud)

反而。

否则,这是我从头开始发现的:

假设您在“目标机器”上运行 JMX 服务器(别名“JMX 代理”,别名“您想要连接的 JVM”),其RMI 注册表端口位于“RMI REGISTRY PORT”,JMX RMI 服务器端口位于“JMX RMI”服务器端口'。

笔记:

  1. RMI注册表告诉JMX客户端在哪里可以找到JMX RMI服务器端口; 可以在 key 下获得信息jmxrmi
  2. RMI注册表端口通常是已知的,因为它是通过在JVM启动系统属性中设置。
  3. JMX RMI服务器端口通常被称为JVM随机选择它(如果不采取预防措施,其他)。

以下 URI 将导致成功(已测试)

service:jmx:rmi://<TARGET_MACHINE>:<JMX_RMI_SERVER_PORT>/jndi/rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi

这看起来很恶心。让我们把它分开。

这个 URI 是一个 RFC2609“服务位置协议 URL”(嗯,它真的是一个 URI,对吧?)

它由以下组成:

  • service - 一个常数
  • jmx:rmi-服务类型由:抽象类型 jmxURL 方案组成 rmi
  • 其余 - sap(服务访问协议规范)

sap分解为:

  • //<TARGET_MACHINE>:<JMX_RMI_SERVER_PORT> - 网站
  • /jndi/rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi - 网址部分

消息灵通的 JMX 客户端连接到“ipsite”以进行 JMX-over-RMI 交换;但是不知道那个端口的 JMX 客户端呢?耐心...

URL部分分解为:

  • /jndi/ - 这似乎告诉 JMX 客户端它可以在后面的位置获取查找信息
  • rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi - 是的,我们在 RMI 注册中心的查找键下获得了有关 JMX RMI 服务器的信息 jmxrmi

这有点像先入为主,因为必须首先联系SLP URL后半部分给出的RMI 注册

挠头之后,凭直觉,我们试试:

service:jmx:rmi://<TARGET_MACHINE>/jndi/rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi

是的,这有效!JMX RMI 服务器端口可以很好地从注册表中获得。再想一想,目标机器也应该从注册表中获取,因此:

service:jmx:rmi:///jndi/rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi

更好的是,这也有效!

参考:

1 download.oracle.com/javase/6/docs/api/javax/management/remote/rmi/package-summary.html
2 download.oracle.com/javase/6/docs/api/javax/management/remote/JMXServiceURL.html
3 mx4j.sourceforge.net/docs/ch03s04.html
4 download.oracle.com/javase/6/docs/technotes/guides/management/agent.html#gdevg
5 http://www.rfc-editor.org/rfc/rfc2609.txt
Run Code Online (Sandbox Code Playgroud)