title: Java jconsole jmx connection failure
body: <p>I'm trying to connect jconsole to a jvm invoked by:</p>
  
  <pre><code>java \
  -Djava.util.logging.config.file=./logging.properties \
  -Dcom.sun.management.jmxremote.ssl=false \
  -Dcom.sun.management.jmxremote.authenticate=false \
  -Dcom.sun.management.jmxremote.port=12700 \
  -cp . Sleep
  </code></pre>
  
  <p>I then try to start jconsole with:</p>
  
  <pre><code>jconsole -J-Djava.util.logging.config.file=./logging.properties
  </code></pre>
  
  <p>The loggin.properties file includes:</p>
  
  <pre><code>sun.rmi.level=FINEST
  </code></pre>
  
  <p>After opening a socket to port 12700, rmi then appears to attempt a connection on another port :</p>
  
  <pre><code>FINER: [javax.management.remote.rmi.RMIConnector: jmxServiceURL=service:jmx:rmi:///jndi/rmi://10.40.243.12:12700/jmxrmi] connecting...
  Jan 5, 2012 2:30:42 PM RMIConnector connect
  FINER: [javax.management.remote.rmi.RMIConnector: jmxServiceURL=service:jmx:rmi:///jndi/rmi://10.40.243.12:12700/jmxrmi] finding stub...
  Jan 5, 2012 2:30:43 PM sun.rmi.transport.tcp.TCPEndpoint &lt;clinit&gt;
  FINE: JConsole.addHost: localHostKnown = true, localHost = 10.206.6.59
  Jan 5, 2012 2:30:43 PM sun.rmi.server.UnicastRef newCall
  FINE: JConsole.addHost: get connection
  Jan 5, 2012 2:30:43 PM sun.rmi.transport.tcp.TCPTransport &lt;init&gt;
  FINE: JConsole.addHost: Version = 2, ep = [10.206.6.59:0]
  Jan 5, 2012 2:30:43 PM sun.rmi.transport.tcp.TCPEndpoint getLocalEndpoint
  FINE: JConsole.addHost: created local endpoint for socket factory null on port 0
  Jan 5, 2012 2:30:43 PM sun.rmi.transport.tcp.TCPChannel createConnection
  FINE: JConsole.addHost: create connection
  Jan 5, 2012 2:30:43 PM sun.rmi.transport.tcp.TCPEndpoint newSocket
  FINER: JConsole.addHost: opening socket to [10.40.243.12:12700]
  Jan 5, 2012 2:30:43 PM sun.rmi.transport.proxy.RMIMasterSocketFactory createSocket
  FINE: JConsole.addHost: host: 10.40.243.12, port: 12700
  Jan 5, 2012 2:30:43 PM sun.rmi.transport.tcp.TCPChannel createConnection
  FINER: JConsole.addHost: server suggested 10.206.6.59:12306
  Jan 5, 2012 2:30:43 PM sun.rmi.transport.tcp.TCPChannel createConnection
  FINER: JConsole.addHost: using 10.206.6.59:0
  Jan 5, 2012 2:30:43 PM sun.rmi.server.UnicastRef newCall
  FINER: JConsole.addHost: create call context
  Jan 5, 2012 2:30:43 PM sun.rmi.server.UnicastRef logClientCall
  FINER: JConsole.addHost: outbound call: [endpoint:[10.40.243.12:12700](remote),objID:[0:0:0, 0]] : sun.rmi.registry.RegistryImpl_Stub[0:0:0, 0]: java.rmi.Remote lookup(java.lang.String)
  Jan 5, 2012 2:30:43 PM sun.rmi.transport.StreamRemoteCall &lt;init&gt;
  FINER: JConsole.addHost: write remote call header...
  Jan 5, 2012 2:30:43 PM sun.rmi.transport.StreamRemoteCall getOutputStream
  FINER: JConsole.addHost: getting output stream
  Jan 5, 2012 2:30:43 PM sun.rmi.server.UnicastRef invoke
  FINER: JConsole.addHost: execute call
  Jan 5, 2012 2:30:43 PM sun.rmi.transport.StreamRemoteCall getInputStream
  FINER: JConsole.addHost: getting input stream
  Jan 5, 2012 2:30:43 PM sun.rmi.server.LoaderHandler loadClass
  FINE: JConsole.addHost: name = "javax.management.remote.rmi.RMIServerImpl_Stub", codebase = "", defaultLoader = sun.misc.Launcher$AppClassLoader@a39137
  Jan 5, 2012 2:30:43 PM sun.rmi.server.LoaderHandler loadClass
  FINER: JConsole.addHost: class "javax.management.remote.rmi.RMIServerImpl_Stub" found via defaultLoader, defined by null
  Jan 5, 2012 2:30:43 PM sun.rmi.server.LoaderHandler loadClass
  FINE: JConsole.addHost: name = "java.rmi.server.RemoteStub", codebase = "", defaultLoader = sun.misc.Launcher$AppClassLoader@a39137
  Jan 5, 2012 2:30:43 PM sun.rmi.server.LoaderHandler loadClass
  FINER: JConsole.addHost: class "java.rmi.server.RemoteStub" found via defaultLoader, defined by null
  Jan 5, 2012 2:30:43 PM sun.rmi.server.LoaderHandler loadClass
  FINE: JConsole.addHost: name = "java.rmi.server.RemoteObject", codebase = "", defaultLoader = sun.misc.Launcher$AppClassLoader@a39137
  Jan 5, 2012 2:30:43 PM sun.rmi.server.LoaderHandler loadClass
  FINER: JConsole.addHost: class "java.rmi.server.RemoteObject" found via defaultLoader, defined by null
  Jan 5, 2012 2:30:43 PM sun.rmi.server.UnicastRef done
  FINE: JConsole.addHost: free connection (reuse = true)
  Jan 5, 2012 2:30:43 PM sun.rmi.transport.tcp.TCPChannel free
  FINE: JConsole.addHost: reuse connection
  Jan 5, 2012 2:30:43 PM sun.rmi.transport.tcp.TCPChannel free
  FINE: JConsole.addHost: create reaper
  Jan 5, 2012 2:30:43 PM sun.rmi.server.UnicastRef newCall
  FINE: JConsole.addHost: get connection
  Jan 5, 2012 2:30:43 PM sun.rmi.transport.tcp.TCPChannel createConnection
  FINE: JConsole.addHost: create connection
  Jan 5, 2012 2:30:43 PM sun.rmi.transport.tcp.TCPEndpoint newSocket
  FINER: JConsole.addHost: opening socket to [tdiap12:41096]
  Jan 5, 2012 2:30:43 PM sun.rmi.transport.proxy.RMIMasterSocketFactory createSocket
  FINE: JConsole.addHost: host: tdiap12, port: 41096
  </code></pre>
  
  <p>The first connection attempt succeeds because on the remote server, I can see ESTABLISHED connection.</p>
  
  <pre><code>wse2tst@tdiap12:~&gt; netstat -a | grep 12700
  tcp        0      0 *:12700                     *:*                         LISTEN      
  tcp        0      0 tdiap12.vgcar.net:12700     per-00c0016253a2.vgca:12252 ESTABLISHED 
  </code></pre>
  
  <p>The packet trace indicates a successful connection as well.</p>
  
  <p>The second connection to port 41096 times out, and the jconsole application reports a "Connection failure" and terminates the first connection as well.  Why is a second connection being attempted?  Is there any way to specify the port for this second connection?  The target server is tightly controlled, and other ports are blocked by firewall rules.  On multiple connection attempts, the second port will change to different random values.</p>
  
  <p>Thanks for any help,
  Steve</p>