Thanks for your reply. I am using the same Java versions on both system. To make things more interesting, when I run my code inside a different tomcat installation using the same version of tomcat I am able to connect successfully.

The exception occurs on this line:

JMXConnector connector = JMXConnectorFactory.connect(serviceUrl, env);

Since it works when running inside tomcat I suspect it must be some environment variable or class that I am missing.


On 02/05/14 22:37, Christopher Schultz wrote:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Alexander,

On 5/2/14, 1:40 AM, Alexander wrote:
I am hoping this is the proper forum for my problem. I have enabled
the JmxRemoteLifeCycleListener and able to connect to tomcat 7
using jconsole etc. using the following url.
Just so you know, this is likely to end in tears. What settings did
you use with that listener?

service:jmx:rmi://10.92.12.88:10002/jndi/rmi://10.92.12.88:10001/jmxrmi

  However as soon as I try to connect from my own application using
the code example  below I get an error the following error. I
figure I need to configure the InitialContextFactory, but I don't
know what class I should specify. I also don't understand how
jconsole is able to connect without any additional configuration,
but my client is not.
So, using that URL, JConsole can connect? That's great.

Perhaps somebody has some pointers on how to make remote JMX
connections programmatically.
Does anything change if you are running on the same host as the Tomcat
process?

------------------------------------------------------------------------

  java.io.IOException : Failed to retrieve RMIServer stub:
javax.naming.NoInitialContextException: Cannot instantiate class:
com.sun.enterprise.naming.impl.SerialInitContextFactory [Root
exception is java.lang.ClassNotFoundException:
com.sun.enterprise.naming.impl.SerialInitContextFactory]
java.io.IOException: Failed to retrieve RMIServer stub:
javax.naming.NoInitialContextException: Cannot instantiate class:
com.sun.enterprise.naming.impl.SerialInitContextFactory [Root
exception is java.lang.ClassNotFoundException:
com.sun.enterprise.naming.impl.SerialInitContextFactory] at
javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:369)


at
javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:270)



Caused by: javax.naming.NoInitialContextException: Cannot
instantiate class:
com.sun.enterprise.naming.impl.SerialInitContextFactory [Root
exception is java.lang.ClassNotFoundException:
com.sun.enterprise.naming.impl.SerialInitContextFactory] at
javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:674)


at
javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313)


at javax.naming.InitialContext.init(InitialContext.java:244)
at javax.naming.InitialContext.<init>(InitialContext.java:216) at
javax.management.remote.rmi.RMIConnector.findRMIServerJNDI(RMIConnector.java:1927)

  at
javax.management.remote.rmi.RMIConnector.findRMIServer(RMIConnector.java:1896)

  at
javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:287)


... 3 more
Caused by: java.lang.ClassNotFoundException:
com.sun.enterprise.naming.impl.SerialInitContextFactory at
java.net.URLClassLoader$1.run(URLClassLoader.java:372) at
java.net.URLClassLoader$1.run(URLClassLoader.java:361) at
java.security.AccessController.doPrivileged(Native Method) at
java.net.URLClassLoader.findClass(URLClassLoader.java:360) at
java.lang.ClassLoader.loadClass(ClassLoader.java:424) at
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at
java.lang.ClassLoader.loadClass(ClassLoader.java:357) at
java.lang.Class.forName0(Native Method) at
java.lang.Class.forName(Class.java:340) at
com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:72)


at
com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:61)


at
javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:672)


... 9 more

Hmm. Are you using radically different versions of Java on both sides
of the connection? Not being able to find an internal class seems like
a big problem.

Where is your code mentioned in the above stack trace? Which line is
it below? (Also, this error is on the client side, not the server, right?)

------------------------------------------------------------------------

  Code extract:

Map<String, String[]> env = new HashMap<String, String[]>();
String[] credentials = new String[] { "username", "password" };
env.put(JMXConnector.CREDENTIALS, credentials); String url =
"service:jmx:rmi://10.92.12.88:10002/jndi/rmi://10.92.12.88:10001/jmxrmi";


serviceUrl = new JMXServiceURL(url);
JMXConnector connector = JMXConnectorFactory.connect(serviceUrl,
env); MBeanServerConnection connection =
connector.getMBeanServerConnection(); ObjectName servicename = new
ObjectName("java.lang:type=Runtime"); ObjectInstance instance =
connection.getObjectInstance(servicename);
- -chris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
Comment: GPGTools - http://gpgtools.org
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQIcBAEBCAAGBQJTY62QAAoJEBzwKT+lPKRYiHwP/ikrgEeFYCw2DxWnpcnKCsEZ
KKVXyuSPEpZXFDxOhj+EO77F+C+5ocadBkYkUTCZkBhcsc95uCVuZfJpx9HMIrKz
Z/w2binOCLnnQqSrjjTw9Cp2MjKrDcTm/PkkITIMjZebDK3DzM4dOM920X4VGXAS
P6oFGRdESEy+CAeEzS+0eta4hqvNbgvLHfcIzQnWJzCaWl9JLnAKXyH9yoYj0iUz
bL+kDCirtqlum7KevuEQOgCsa1+vDZfsTC8SlKkYcJcoysICbBBHJfVwArzQGbat
RYiKPBRA7tbsn2j4D5/YTEOAIl2v1BO9u2BJmuxDDhIuz1kPUQoRlZiLZOkw/Jek
KX4kYCAa6GaqkMTKvpHmK891xV8QBtzVpnoKEMUARqGH7stjNr5hHAO7ZSpqiOVy
vDPAxRBNMDOsPyXqZGqcPWVzfNbyBjAW4ZQoF+0vb8AUR4u3yn+N2GiA5v+uX0hj
tWSNF1nHC1v2j6BrYAUi8wsT7+SJBcOqCjn9+IK2ujINoK9qljBMT7jVNrJjD1zC
4odZYzheMGhdmGult+zMNNLzSRuiIQIUi4ZbQPXBYZQ8zfXeHj3+jZI20hPWlA1n
qAvwOV9VbsReKwLt7A8NEFW9al9qxpU0nOArNrVUdxAohQ6aGvyqrhRwUxaLe/k/
jeqt+l8rdKDmWsQmFoGZ
=lwJV
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org





---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to