好的,我原本以为op给出的URL是错误的,但事实并非如此。所以我无法回答。
不过,这里有一些基础知识:
通过进行简单连接
jconsole。
例如,如果您知道要连接的JMX服务器的RMI注册表端口为9003,请使用
localhost:9003
代替。
否则,这就是我从头开始发现的内容:
假设您具有在“ TARGET MACHINE”上运行的JMX服务器(别名为“ JMX Agent”别名“您要连接的JVM”),RMI注册表端口位于“ RMI REGISTRY PORT”,JMX RMI服务器端口位于“ JMX RMI”服务器端口’。
注意:
- 在RMI注册表告诉JMX客户端在哪里可以找到JMX RMI服务器端口; 可以在key下获取信息jmxrmi。
- 在RMI注册表端口通常是已知的,因为它是通过在JVM启动系统属性中设置。
- 在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
-服务类型包括:抽象类型 jmx和URL方案 rmi
其余-SAP(服务访问协议规范)
汁液分解为://<TARGET_MACHINE>:<JMX_RMI_SERVER_PORT> -ipsite
/jndi/rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi -URL
部分
消息灵通的JMX客户端连接到“ ipsite”以进行RMX上的JMX交换。但是不知道该端口的JMX客户端呢?忍耐…
URL部分分解为:
/jndi/
-这似乎告诉JMX客户端可以在随后的位置获取查询信息
r*mi://<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.html2 download.oracle.com/javase/6/docs/api/javax/management/remote/JMXServiceURL.html3 mx4j.sourceforge.net/docs/ch03s04.html4 download.oracle.com/javase/6/docs/technotes/guides/management/agent.html#gdevg5 http://www.rfc-editor.org/rfc/rfc2609.txt



