使用Java JMX连接到同一子网上的Tomcat服务器

时间:2011-06-17 10:51:57

标签: java tomcat subdomain jmx

我的Tomcat JMX连接有问题。我有两个主机(即host1.mydomain.com,host2.mydomain.com),它们连接到同一个子网。在这两台机器上运行JmxRemoteLifecycleListener

<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="10010" rmiServerPortPlatform="10011"/>

作为用户,我想通过Java JMX与Tomcat通信。从外面我可以成功连接并正确查看属性。我连接的网址是:

service:jmx:rmi://host1.mydomain.com:10011/jndi/rmi://host1.mydomain.com:10010/jmxrmi

但是,如果我想通过jmx(service:jmx:rmi://host2:10011/jndi/rmi://host2:10010/jmxrmi)从一台主机连接到另一台主机上的Tomcat,它就无法工作。 我的连接超时了:

java.rmi.ConnectException: Connection refused to host: ip-adress from host1; nested exception is:
    java.net.ConnectException: Connection timed out
    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.invoke(UnicastRef.java:110)
    at javax.management.remote.rmi.RMIServerImpl_Stub.newClient(Unknown Source)
    at javax.management.remote.rmi.RMIConnector.getConnection(RMIConnector.java:2327)
    at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:279)
    at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:248)
    at com.myjmx.jmxtest.montor.Monitor.getInformation(Monitor.java:52)
    at com.myjmx.jmxtest.Start.main(Start.java:39)
Caused by: java.net.ConnectException: Connection timed out
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
    at java.net.Socket.connect(Socket.java:529)
    at java.net.Socket.connect(Socket.java:478)
    at java.net.Socket.<init>(Socket.java:375)
    at java.net.Socket.<init>(Socket.java:189)
    at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:22)
    at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:128)
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:595)
    ... 9 more

Monitor.java中的第52行是JMXConnector:

JMXConnector connector = JMXConnectorFactory.connect(url, environment);

service:jmx:rmi:///jndi/rmi://host1:9008/jmxrmi等其他端口正常运行。 但我无法连接到端口10010(Tomcat端口)上面这个较短的URL service:jmx:rmi:///jndi/rmi://host1:10010/jmxrmi

还有Tomcat上运行的探测器。

我不知道可能是什么原因。我认为Tomcat是一个问题,该端口在同一个子网或类似的东西中被禁用。但我不知道如何启用端口。

有没有人有解决方案或同样的问题?

编辑:

Tomcat的配置与此主题类似:Tomcat 6, JMX and the dynamic port problem

更新: 我想我找到了问题的原因。服务器上安装了两个NIC。但是我只能为Tomcat的JMX激活一个NIC。 有没有办法激活两个网卡?所以我可以从外部和内部连接?我不知道可能在不同的端口的帮助下?所以-Djava.rmi.server.hostname = $ IP在正常端口上运行,而java.rmi.server.useLocalHostname在3333上运行。

由于

spinner0815

0 个答案:

没有答案