我想了解一个JMX服务URL.
service:jmx:rmi://192.168.30.10:1234/jndi/rmi://192.168.30.10:2344/jmxrmi
Run Code Online (Sandbox Code Playgroud)
如果有人能帮助我理解这一点,那就太好了.
谢谢
Dav*_*fer 100
我将重用我之前为此问题编写的答案:无法通过Java6中的jconsole连接到Tomcat的MBeanServer
它不完整,但可能有所帮助:
假设你有'TARGET MACHINE'运行的JMX服务器(别名'JMX代理'别名'你要连接的JVM'),RMI注册表端口位于'RMI REGISTRY PORT',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- 服务类型包括:抽象类型 jmx和URL方案 rmisap被分解为:
//<TARGET_MACHINE>:<JMX_RMI_SERVER_PORT> - ipsite/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
更好的是,这也有效!
参考文献:
小智 6
解释:
service:jmx:rmi://192.168.30.10:1234/jndi/rmi://192.168.30.10:2344/jmxrmi
Run Code Online (Sandbox Code Playgroud)
service:jmx:rmi://192.168.30.10:1234 - 说机器上有一个JMX代理,IP地址为192.168.30.10.JMX代理使用(TCP)端口1234通过RMI提供JMX服务(基本上充当RMI服务器)./jndi/rmi://192.168.30.10:2344/jmxrmi - 说,RMI存根与JMX代理通过RMI交互可以在其中与IP地址192.168.30.10的机器上运行的RMI注册表中找到并使用(TCP)端口2344要获得RMI存根需要查找"jmxrmi"绑定.以前的答案表明URL的第二部分是获取JMX RMI服务器的服务器端口.这是不正确的.JMX RMI服务器端口是(TCP)1234,是URL的一部分.您从RMI注册表获得的是RMI stub(javax.management.remote.rmi.RMIServerImpl_Stub),您可以使用它通过RMI与JMX代理(MBean Server)进行通信.
希望这可以帮助.
这个网址是这样组装的
service:jmx:rmi://ignoredhost/jndi/rmi://myhost/myname
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
59505 次 |
| 最近记录: |