【问题标题】:Error starting Custom JMX Server on 0.0.0.0在 0.0.0.0 上启动自定义 JMX 服务器时出错
【发布时间】:2011-02-15 22:22:55
【问题描述】:

我正在使用以下代码启动我们的 JMX 服务器:

Integer port = 8291;
JMXServiceURL url = new JMXServiceURL("service:jmx:rmi://0.0.0.0:"+ (port+100) +"/jndi/rmi://0.0.0.0:"+ port +"/jmxrmi");

在我们的应用程序启动时,我们得到:

Caused by: java.rmi.ConnectException: Connection refused to host: 0.0.0.0; nested exception is:
        java.net.ConnectException: Connection refused
        at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:601)
        at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:198)
        at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:184)
        at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:322)
        at sun.rmi.registry.RegistryImpl_Stub.bind(Unknown Source)
        at com.sun.jndi.rmi.registry.RegistryContext.bind(RegistryContext.java:120)
        ... 53 more
Caused by: java.net.ConnectException: Connection refused
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:193)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
        at java.net.Socket.connect(Socket.java:525)
        at java.net.Socket.connect(Socket.java:475)
        at java.net.Socket.<init>(Socket.java:372)
        at java.net.Socket.<init>(Socket.java:186)
        at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:22)
        at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterS

这在 windows 中有效,但在 linux 上失败。没有任何东西绑定到 8291。(我用 netstat -anp 验证了这一点)

有人知道为什么会失败吗?

仅供参考。由于防火墙,我们正在启动自定义 JMX 服务器(请参阅 here 了解原因)

【问题讨论】:

  • 不确定这是否对您有帮助,但我在我的 linux 机器上得到了相同的结果。
  • 但是它在 MS Windows 2003 Server 上也失败了,这与您的体验不同。

标签: java linux networking rmi jmx


【解决方案1】:

找到a note which might help you:

使用 Sun 的 JMX Remote JMX RI, 主机名/ip-addr 段未使用 限制目标 IP 地址/名称, 正如它应该。它必须匹配任何 此主机的有效 IP 地址/名称 (包括本地主机或 127.0.0.1), 然后它将收听 IPADDR_ANY。 您将不得不进行自定义编码(或 使用 IP 过滤或防火墙 产品)来限制听 地址。

所以看起来您可以将 0.0.0.0 替换为 localhost 并且它仍会侦听所有网络接口。

顺便说一句,我用这个更改尝试了你的代码,但现在我得到了另一个异常(虽然是一个不同的异常)。

【讨论】:

    猜你喜欢
    • 2016-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-18
    • 2014-12-09
    • 1970-01-01
    相关资源
    最近更新 更多