I am trying to connect to a remote Java process which is running on a different machine using JConsole tool on my Ubuntu machine.
This is how I am running the Java program in remote machine:
sudo java -Dcom.sun.management.jmxremote.port=51082 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -jar myfile.jar
I am running JConsole command on my machine like this:
jconsole -debug -J-Djava.util.logging.config.file=Logging.properties
This is my Logging.properties
file:
handlers = java.util.logging.ConsoleHandler
sun.rmi.level=FINEST
.level = INFO
java.util.logging.ConsoleHandler.level = FINEST
java.util.logging.ConsoleHandler.formatter = \
java.util.logging.SimpleFormatter
// Use FINER or FINEST for javax.management.remote.level - FINEST is
// very verbose...
javax.management.level = FINEST
javax.management.remote.level = FINER
Now on my Jconsle UI I have given below properties:
When I click on Connect
button I am getting exception saying:
FINER: [javax.management.remote.rmi.RMIConnector: jmxServiceURL=service:jmx:rmi:///jndi/rmi://my-remote-host:51082/jmxrmi] failed to connect: java.lang.SecurityException: Expecting a sun.rmi.server.UnicastRef2 remote reference in stub!
java.lang.SecurityException: Expecting a sun.rmi.server.UnicastRef2 remote reference in stub!
This is the complete stacktrace of the exception as per logs:
Jul 14, 2015 7:39:55 PM RMIConnector connect
FINER: [javax.management.remote.rmi.RMIConnector: jmxServiceURL=service:jmx:rmi:///jndi/rmi://my-remote-host:51082/jmxrmi] connecting...
Jul 14, 2015 7:39:55 PM RMIConnector connect
FINER: [javax.management.remote.rmi.RMIConnector: jmxServiceURL=service:jmx:rmi:///jndi/rmi://my-remote-host:51082/jmxrmi] finding stub...
Jul 14, 2015 7:39:55 PM sun.rmi.transport.tcp.TCPEndpoint <clinit>
FINE: VMPanel.connect: localHostKnown = true, localHost = 127.0.0.8
Jul 14, 2015 7:39:55 PM sun.rmi.server.UnicastRef newCall
FINE: VMPanel.connect: get connection
Jul 14, 2015 7:39:55 PM sun.rmi.transport.tcp.TCPTransport <init>
FINE: VMPanel.connect: Version = 2, ep = [127.0.0.8:0]
Jul 14, 2015 7:39:55 PM sun.rmi.transport.tcp.TCPEndpoint getLocalEndpoint
FINE: VMPanel.connect: created local endpoint for socket factory null on port 0
Jul 14, 2015 7:39:55 PM sun.rmi.transport.tcp.TCPChannel createConnection
FINE: VMPanel.connect: create connection
Jul 14, 2015 7:39:55 PM sun.rmi.transport.tcp.TCPEndpoint newSocket
FINER: VMPanel.connect: opening socket to [my-remote-host:51082]
Jul 14, 2015 7:39:55 PM sun.rmi.transport.proxy.RMIMasterSocketFactory createSocket
FINE: VMPanel.connect: host: my-remote-host, port: 51082
Jul 14, 2015 7:39:58 PM sun.rmi.transport.tcp.TCPChannel createConnection
FINER: VMPanel.connect: server suggested 10.56.36.2:36585
Jul 14, 2015 7:39:58 PM sun.rmi.transport.tcp.TCPChannel createConnection
FINER: VMPanel.connect: using 127.0.0.8:0
Jul 14, 2015 7:39:58 PM sun.rmi.server.UnicastRef newCall
FINER: VMPanel.connect: create call context
Jul 14, 2015 7:39:58 PM sun.rmi.server.UnicastRef logClientCall
FINER: VMPanel.connect: outbound call: [endpoint:[my-remote-host:51082](remote),objID:[0:0:0, 0]] : sun.rmi.registry.RegistryImpl_Stub[0:0:0, 0]: java.rmi.Remote lookup(java.lang.String)
Jul 14, 2015 7:39:58 PM sun.rmi.transport.StreamRemoteCall <init>
FINER: VMPanel.connect: write remote call header...
Jul 14, 2015 7:39:58 PM sun.rmi.transport.StreamRemoteCall getOutputStream
FINER: VMPanel.connect: getting output stream
Jul 14, 2015 7:39:58 PM sun.rmi.server.UnicastRef invoke
FINER: VMPanel.connect: execute call
Jul 14, 2015 7:39:59 PM sun.rmi.transport.StreamRemoteCall getInputStream
FINER: VMPanel.connect: getting input stream
Jul 14, 2015 7:39:59 PM sun.rmi.server.LoaderHandler loadClass
FINE: VMPanel.connect: name = "javax.management.remote.rmi.RMIServerImpl_Stub", codebase = "", defaultLoader = sun.misc.Launcher$AppClassLoader@530f243b
Jul 14, 2015 7:39:59 PM sun.rmi.server.LoaderHandler loadClass
FINER: VMPanel.connect: class "javax.management.remote.rmi.RMIServerImpl_Stub" found via defaultLoader, defined by null
Jul 14, 2015 7:39:59 PM sun.rmi.server.LoaderHandler loadClass
FINE: VMPanel.connect: name = "java.rmi.server.RemoteStub", codebase = "", defaultLoader = sun.misc.Launcher$AppClassLoader@530f243b
Jul 14, 2015 7:39:59 PM sun.rmi.server.LoaderHandler loadClass
FINER: VMPanel.connect: class "java.rmi.server.RemoteStub" found via defaultLoader, defined by null
Jul 14, 2015 7:39:59 PM sun.rmi.server.LoaderHandler loadClass
FINE: VMPanel.connect: name = "java.rmi.server.RemoteObject", codebase = "", defaultLoader = sun.misc.Launcher$AppClassLoader@530f243b
Jul 14, 2015 7:39:59 PM sun.rmi.server.LoaderHandler loadClass
FINER: VMPanel.connect: class "java.rmi.server.RemoteObject" found via defaultLoader, defined by null
Jul 14, 2015 7:39:59 PM sun.rmi.server.UnicastRef done
FINE: VMPanel.connect: free connection (reuse = true)
Jul 14, 2015 7:39:59 PM sun.rmi.transport.tcp.TCPChannel free
FINE: VMPanel.connect: reuse connection
Jul 14, 2015 7:39:59 PM sun.rmi.transport.tcp.TCPChannel free
FINE: VMPanel.connect: create reaper
Jul 14, 2015 7:39:59 PM sun.rmi.server.UnicastRef newCall
FINE: VMPanel.connect: get connection
Jul 14, 2015 7:39:59 PM sun.rmi.transport.tcp.TCPChannel createConnection
FINE: VMPanel.connect: create connection
Jul 14, 2015 7:39:59 PM sun.rmi.transport.tcp.TCPEndpoint newSocket
FINER: VMPanel.connect: opening socket to [127.0.1.1:57675]
Jul 14, 2015 7:39:59 PM sun.rmi.transport.proxy.RMIMasterSocketFactory createSocket
FINE: VMPanel.connect: host: 127.0.1.1, port: 57675
Jul 14, 2015 7:39:59 PM sun.rmi.server.UnicastRef newCall
FINE: RMI RenewClean-[127.0.1.1:57675]: get connection
Jul 14, 2015 7:39:59 PM sun.rmi.transport.tcp.TCPChannel createConnection
FINE: RMI RenewClean-[127.0.1.1:57675]: create connection
Jul 14, 2015 7:39:59 PM sun.rmi.transport.tcp.TCPEndpoint newSocket
FINER: RMI RenewClean-[127.0.1.1:57675]: opening socket to [127.0.1.1:57675]
Jul 14, 2015 7:39:59 PM sun.rmi.transport.WeakRef pin
FINER: VMPanel.connect: strongRef = sun.rmi.transport.DGCImpl@63a1b509
Jul 14, 2015 7:40:00 PM sun.rmi.transport.proxy.RMIMasterSocketFactory createSocket
FINE: RMI RenewClean-[127.0.1.1:57675]: host: 127.0.1.1, port: 57675
Jul 14, 2015 7:40:00 PM sun.rmi.transport.ObjectTable putTarget
FINER: VMPanel.connect: add object [0:0:0, 2]
Jul 14, 2015 7:40:00 PM sun.rmi.transport.ConnectionInputStream done
FINER: VMPanel.connect: send ack
Jul 14, 2015 7:40:00 PM sun.rmi.transport.tcp.TCPChannel newConnection
FINE: VMPanel.connect: reuse connection
Jul 14, 2015 7:40:00 PM sun.rmi.transport.tcp.TCPChannel free
FINE: VMPanel.connect: reuse connection
Jul 14, 2015 7:40:00 PM RMIConnector connect
FINER: [javax.management.remote.rmi.RMIConnector: jmxServiceURL=service:jmx:rmi:///jndi/rmi://my-remote-host:51082/jmxrmi] failed to connect: java.lang.SecurityException: Expecting a sun.rmi.server.UnicastRef2 remote reference in stub!
java.lang.SecurityException: Expecting a sun.rmi.server.UnicastRef2 remote reference in stub!
at javax.management.remote.rmi.RMIConnector.checkStub(RMIConnector.java:1871)
at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:295)
at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:268)
at sun.tools.jconsole.ProxyClient.tryConnect(ProxyClient.java:357)
at sun.tools.jconsole.ProxyClient.connect(ProxyClient.java:313)
at sun.tools.jconsole.VMPanel$2.run(VMPanel.java:292)
Jul 14, 2015 7:40:01 PM sun.rmi.server.UnicastRef newCall
FINE: RMI RenewClean-[127.0.1.1:57675]: get connection
Jul 14, 2015 7:40:01 PM sun.rmi.transport.tcp.TCPChannel createConnection
I am not able to figure out where is the issue.
update:
I am able to connect to my remote host for the given port:
telnet my_remote_host 51082
As per this link, I got the response from the host without any issues.
Please use below settings . I was also facing same issue but resolved after having below settings
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.port=9704
-Djava.rmi.server.hostname=172.18.137.35
-Dcom.sun.management.jmxremote.rmi.port=970
Please note of Djava.rmi.server.hostname
and Dcom.sun.management.jmxremote.rmi.port
.
Even after this settings it will ask for insecure connection please accept it and then you are able to connect (it will give you error and of failed to connect: java.lang.SecurityException: Expecting a sun.rmi.server.UnicastRef2 remote reference in stub!
).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With