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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
[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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 !