解释 JMX 网址
我正在尝试理解 JMX 服务 URL。
service:jmx:rmi://192.168.30.10:1234/jndi/rmi://192.168.30.10:2344/jmxrmi
如果有人能帮助我理解这一点,那就太好了。
谢谢
我正在尝试理解 JMX 服务 URL。
service:jmx:rmi://192.168.30.10:1234/jndi/rmi://192.168.30.10:2344/jmxrmi
如果有人能帮助我理解这一点,那就太好了。
谢谢
我将重用我之前为这个问题写的答案:无法通过Java6中的jconsole连接到Tomcat的MBeanServer。
它不完整,但可能会有所帮助:
假设您在“目标机器”上运行 JMX 服务器(别名“JMX 代理”别名“要连接到的 JVM”),其中 RMI 注册表端口位于“RMI 注册表端口”,JMX RMI 服务器端口位于“JMX RMI 服务器端口”。
注意:
jmxrmi
以下 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
- 服务类型由以下部分组成:抽象类型和URL方案jmx
rmi
汁液分解为:
//<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
更好的是,这也有效!
引用:
解释一下:
service:jmx:rmi://192.168.30.10:1234/jndi/rmi://192.168.30.10:2344/jmxrmi
service:jmx:rmi://192.168.30.10:1234
- 表示计算机上有一个 IP 地址为 192.168.30.10 的 JMX 代理。JMX 代理使用 (TCP) 端口 1234 通过 RMI(基本上充当 RMI 服务器)提供 JMX 服务。/jndi/rmi://192.168.30.10:2344/jmxrmi
- 表示可以通过 RMI 与 JMX 代理交互的 RMI 存根在 RMI 注册表中找到,该注册表在 IP 地址为 192.168.30.10 的计算机上运行,并且正在使用 (TCP) 端口 2344。要获取 RMI 存根,您需要查找“jmxrmi”绑定。前面的答案表明,URL的第二部分是获取JMX RMI服务器的服务器端口。这是不正确的。JMX RMI 服务器端口是 (TCP) 1234,是 URL 的一部分。从 RMI 注册表获得的是 RMI 存根 (),您可以使用它通过 RMI 与 JMX 代理(MBean 服务器)进行通信。javax.management.remote.rmi.RMIServerImpl_Stub
希望这有帮助。