RMI JMX连接的Java代码有什么问题?

RMI JMX连接的Java代码有什么问题?,java,groovy,rmi,jmx,Java,Groovy,Rmi,Jmx,RMI JMX连接的Java代码有什么问题?我显然没有尝试连接到localhost,但错误表明我正在连接。在远程服务器上,我在端口1099上启用了JMX选项(无身份验证) 下面是我的groovy脚本: import javax.management.remote.*; JMXServiceURL u = new JMXServiceURL("service:jmx:rmi://10.222.244.185:9999/jndi/rmi://10.222.244.185:1099/jmx

RMI JMX连接的Java代码有什么问题?我显然没有尝试连接到localhost,但错误表明我正在连接。在远程服务器上,我在端口1099上启用了JMX选项(无身份验证)

下面是我的groovy脚本:

import javax.management.remote.*;    
JMXServiceURL u = 
 new JMXServiceURL("service:jmx:rmi://10.222.244.185:9999/jndi/rmi://10.222.244.185:1099/jmxrmi");    
JMXConnector c = JMXConnectorFactory.connect(u);
下面是我得到的错误:

C:\Temp>groovy jmx.gv
Caught: java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Conn
ection refused to host: 10.222.244.185; nested exception is:
        java.net.ConnectException: Connection refused: connect]
java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection r
efused to host: 10.222.244.185; nested exception is:
        java.net.ConnectException: Connection refused: connect]
        at jmx.run(jmx.gv:5)
Caused by: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: 10.222.244.185; nested except
ion is:
        java.net.ConnectException: Connection refused: connect]
        at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:101)
        at com.sun.jndi.toolkit.url.GenericURLContext.lookup(GenericURLContext.java:185)
        ... 1 more
Caused by: java.rmi.ConnectException: Connection refused to host: 10.222.244.185; nested exception is:
        java.net.ConnectException: Connection refused: connect
        at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:97)
        ... 2 more
Caused by: java.net.ConnectException: Connection refused: connect
        ... 3 more

不知何故,您的代码试图连接到
127.0.0.1
而不是远程

Connection refused to host: 127.0.0.1; nested exception is:

我怀疑您正在执行的代码与您正在讨论的代码不同。确保正在执行所涉及的代码。

这就是著名的java.rmi.server.hostname问题。通常由某些Linux发行版中的/etc/hosts错误配置引起。127.0.0.1应该映射到localhost,真实主机名应该映射到真实IP地址。请参阅RMI常见问题解答中的项目A.1以了解其他解决方案


编辑:既然您已经编辑了问题中的IP地址,那么您正在查找的JMX服务很可能根本就没有在该IP地址上运行。

嗯。我不明白这是怎么可能的。我配置的URL(如上)显然正在连接到10。子网。你是从本地测试还是部署在哪里?我稍微改变了我的问题。你能重新评估吗?也许它太难问别人,因为这种类型的环境可能有许多因素导致问题?你有没有验证任何防火墙运行?我会这样做,首先使用JConsole,并确保您能够使用该URL进行连接。如果您不在windows上,在做任何事情之前,首先检查EJP应答是值得的。似乎使用windows机器c:\>Temp?对不起,伙计们。我刚刚发现远程JVM在OpenJDK上运行,而我使用的VisualVM在Oracle Hotspot上运行。这一定是问题所在?不应该。更可能的情况是,它根本没有运行。ping和telnet对主机:端口有效吗?(只是为了排除网络问题)