我正在尝试理解一个JMX服务URL。
service:jmx:rmi://192.168.30.10:1234/jndi/rmi://192.168.30.10:2344/jmxrmi如果有人能帮我理解这一点,那就太好了。
谢谢
发布于 2011-08-18 04:15:19
我将重用我之前为这个问题写的答案:Cannot connect to Tomcat's MBeanServer via jconsole in Java6
它还不完整,但可能会有所帮助:
假设您在“目标计算机”上运行JMX服务器(别名为“JMX代理”,别名为“要连接的JVM”),其中RMI注册表端口位于“RMI注册表端口”,而JMX RMI服务器端口位于“JMX RMI服务器端口”。
注意:
RMI注册表告诉JMX客户端在哪里可以找到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 -服务类型由:抽象型rest和URL方案rmi)
sap被分解为:
//<TARGET_MACHINE>:<JMX_RMI_SERVER_PORT> - URL - ipsite/jndi/rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi part一个消息灵通的JMX客户机连接到"ipsite“来进行JMX-over-RMI交换;但是不知道该端口的JMX客户机怎么办?耐心..。
URL部分被分解为:
/jndi/ -这似乎告诉JMX客户端,它可以在followsrmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi的位置获得查找信息-是的,我们在RMI注册表的查找键jmxrmi下获得了有关JMX RMI Server的信息
这在某种程度上是本末倒置的,因为必须首先联系由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
更好的是,这也是有效的!
参考文献:
发布于 2016-08-18 17:38:36
解释如下:
service:jmx:rmi://192.168.30.10:1234/jndi/rmi://192.168.30.10:2344/jmxrmiservice:jmx:rmi://192.168.30.10:1234 -表示在IP地址为192.168.30.10的机器上有一个JMX代理。JMX代理使用(TCP)端口1234通过RMI提供JMX服务(基本上充当RMI server)./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 (javax.management.remote.rmi.RMIServerImpl_Stub),您可以使用它通过RMI来与JMX (MBean Server)通信。
希望这能有所帮助。
发布于 2010-05-05 03:29:02
根据javax.management.remote.rmi的说法
这个url是这样组装的
service:jmx:rmi://ignoredhost/jndi/rmi://myhost/mynamehttps://stackoverflow.com/questions/2768087
复制相似问题