I have a problem with my Tomcat JMX connection. I have two hosts (e.g. host1.mydomain.com, host2.mydomain.com) that are connected to the same subnet. On both of these machines JmxRemoteLifecycleListener works
<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="10010" rmiServerPortPlatform="10011"/>
As a user, I want to communicate with Tomcat through Java JMX. From the outside, I can successfully connect and see attributes correctly. URL I'm connecting to:
service:jmx:rmi://host1.mydomain.com:10011/jndi/rmi://host1.mydomain.com:10010/jmxrmi
But if I want to connect from one host to Tomcat on another host via jmx ( service:jmx:rmi://host2:10011/jndi/rmi://host2:10010/jmxrmi), it does not work. I got a connection timeout:
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
On line 52 in Monitor.java is the JMXConnector:
JMXConnector connector = JMXConnectorFactory.connect(url, environment);
Other ports, such as service:jmx:rmi:///jndi/rmi://host1:9008/jmxrmiworking correctly. But I cannot connect to port 10010 (Tomcat port) with this shorter url aboveservice:jmx:rmi:///jndi/rmi://host1:10010/jmxrmi
Tomcat .
, . , Tomcat , - . , .
- ?
Edit:
Tomcat : Tomcat 6, JMX
:
, . . JMX Tomcat.
? ? , , ? , -Djava.rmi.server.hostname = $IP , java.rmi.server.useLocalHostname 3333, .
spinner0815
source
share