Bonjour,
je commence à m'intéresser à JMX et commence à faire qqs tests.
Je viens d'écire un petit serveur JMX de test et j'ai le pb suivant à l'exécution :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| java.io.IOException: Cannot bind to URL [rmi://localhost:8888/server]: javax.naming.CommunicationException [Root exception is java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: javax.management.remote.rmi.RMIServerImpl_Stub]
at javax.management.remote.rmi.RMIConnectorServer.newIOException(RMIConnectorServer.java:814)
at javax.management.remote.rmi.RMIConnectorServer.start(RMIConnectorServer.java:431)
at TestJMXServer$SimpleAgent.<init>(TestJMXServer.java:85)
at TestJMXServer.main(TestJMXServer.java:39)
Caused by: javax.naming.CommunicationException [Root exception is java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: javax.management.remote.rmi.RMIServerImpl_Stub]
at com.sun.jndi.rmi.registry.RegistryContext.bind(RegistryContext.java:117)
at com.sun.jndi.toolkit.url.GenericURLContext.bind(GenericURLContext.java:208)
at javax.naming.InitialContext.bind(InitialContext.java:355)
at javax.management.remote.rmi.RMIConnectorServer.bind(RMIConnectorServer.java:635)
at javax.management.remote.rmi.RMIConnectorServer.start(RMIConnectorServer.java:427)
... 2 more
Caused by: java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: javax.management.remote.rmi.RMIServerImpl_Stub
at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:352)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:207)
at sun.rmi.transport.Transport$1.run(Transport.java:148)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:144)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
at java.lang.Thread.run(Thread.java:534)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:247)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:223)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:350)
at sun.rmi.registry.RegistryImpl_Stub.bind(Unknown Source)
at com.sun.jndi.rmi.registry.RegistryContext.bind(RegistryContext.java:111)
... 6 more
Caused by: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: javax.management.remote.rmi.RMIServerImpl_Stub
at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source)
at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:342)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:207)
at sun.rmi.transport.Transport$1.run(Transport.java:148)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:144)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701)
at java.lang.Thread.run(Thread.java:534)
Caused by: java.lang.ClassNotFoundException: javax.management.remote.rmi.RMIServerImpl_Stub
at java.net.URLClassLoader$1.run(URLClassLoader.java:199)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:219)
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:430)
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:165)
at java.rmi.server.RMIClassLoader$2.loadClass(RMIClassLoader.java:631)
at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:257)
at sun.rmi.server.MarshalInputStream.resolveClass(MarshalInputStream.java:200)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1513)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1435)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1626)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
... 9 more |
Ce n'est pas un pb de classpath, d'autant plus qu'ayant activé l'option '-verbose:class', il apparait bien un peu avant
[Loaded javax.management.remote.rmi.RMIServerImpl_Stub]
Je ne vois vraiment pas pas ce qui ne va pas...surtout que ça marchait bien il y a quelques jours ... en 2006 (le 28 décembre !) : bug 2007 ?
Le code est le suivant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| mbs = MBeanServerFactory.createMBeanServer("SimpleAgent");
// Unique identification of MBeans
Hello helloBean = new Hello();
ObjectName helloName = null;
try
{
// Uniquely identify the MBeans and register them with the platform MBeanServer
helloName = new ObjectName("SimpleAgent:name=hellothere");
mbs.registerMBean(helloBean, helloName);
// Create an RMI connector and start it
JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:9999/server");
JMXConnectorServer cs = JMXConnectorServerFactory.newJMXConnectorServer(url, null, mbs);
cs.start();
}
catch(Exception e)
{
e.printStackTrace();
} |
et la ligne de commande est :
1 2
|
C:\j2sdk1.4.2_03\bin\javaw -verbose:class -XX:+TraceClassLoading -Xbootclasspath:C:\j2sdk1.4.2_03\jre\lib\rt.jar -classpath d:\workspace-ECLIPSE\testDid;D:\JAVA\jmx-1_2_1-bin\lib\jmxri.jar;D:\JAVA\jmxremote-1_0_1-bin\lib\jmxremote.jar;D:\JAVA\jmxremote-1_0_1-bin\lib\jmxremote_optional.jar TestJMXServer |
Merci de votre aide !
Partager