【问题标题】:What is wrong with this Java code for a RMI JMX connection?这个用于 RMI JMX 连接的 Java 代码有什么问题?
【发布时间】:2012-11-07 22:05:34
【问题描述】:

这个用于 RMI JMX 连接的 Java 代码有什么问题?我显然没有尝试连接到本地主机,但错误暗示我是。在远程服务器上,我在端口 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

【问题讨论】:

  • 对不起,伙计们。我刚刚发现远程 JVM 在 OpenJDK 上运行,而我使用的 VisualVM 在 Oracle Hotspot 上。一定是这个问题?
  • 不应该。更有可能它根本没有运行。
  • ping 和 telnet 是否对 host:ports 有效? (只是为了排除网络问题)

标签: java groovy rmi jmx


【解决方案1】:

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

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

【讨论】:

  • 似乎 OP 使用 windows 机器 c:\>Temp?
【解决方案2】:

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

Connection refused to host: 127.0.0.1; nested exception is:

我怀疑您正在执行的代码与您有问题的代码不同。确保正在执行您有问题的代码。

【讨论】:

  • 嗯。我不明白这怎么可能。我配置的 URL(上图)显然是连接到 10. 子网。
  • 您是在本地测试还是在哪里部署?
  • 我稍微改变了我的问题。可以重新评价吗?也许因为这种类型的环境可能有很多因素导致问题,所以问别人太难了?
  • 您是否验证过任何防火墙正在运行?我会这样做,首先使用 JConsole 并确保您能够使用该 URL 进行连接。
  • 如果您不在 Windows 上,在做任何事情之前先检查 EJP 答案是值得的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-05
  • 2023-03-09
相关资源
最近更新 更多