Bonjour,
Je dois déployer une application avec un EJB MDB, branché sur une queue. Lorsque le MDB reçoit un message, j'ai la trace d'exception suivante :
Par contre, le MDB reçoit bien le message et est capable de le lire.
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 2009-05-04 08:49:57,256 : Message.getObject : ERROR: getObject() java.lang.ClassNotFoundException: fr.sewatech.essai.ejb.mdb.Contenu at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at java.lang.ClassLoader.loadClass(ClassLoader.java:252) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:247) at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:604) at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1575) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) at org.objectweb.joram.shared.messages.Message.getObject(Message.java:280) at org.objectweb.joram.client.jms.ObjectMessage.getObject(ObjectMessage.java:86) at fr.sewatech.essai.ejb.mdb.EssaiMsgBean.onMessage(EssaiMsgBean.java:119) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.objectweb.jonas_ejb.container.JMessageEndpointProxy.invoke(JMessageEndpointProxy.java:214) at $Proxy0.onMessage(Unknown Source) at org.objectweb.joram.client.connector.InboundSession.onMessage(InboundSession.java:175) at org.objectweb.joram.client.jms.MessageConsumerListener.activateListener(MessageConsumerListener.java:439) at org.objectweb.joram.client.jms.MultiSessionConsumer.onMessage(MultiSessionConsumer.java:168) at org.objectweb.joram.client.jms.Session.onMessage(Session.java:2030) at org.objectweb.joram.client.jms.Session.run(Session.java:1126) at org.objectweb.joram.client.connector.InboundSession.run(InboundSession.java:159) at org.objectweb.jonas_lib.JWorkManager.doMyWork(JWorkManager.java:386) at org.objectweb.jonas_lib.JWorkManager.nextWork(JWorkManager.java:443) at org.objectweb.jonas_lib.JWorkManager$WorkThread.run(JWorkManager.java:536)
Si je comprends bien, cette erreur est due à un problème de classloader au moment de désérialisé le message. J'ai réussi à contourner le problème en ajoutant un jar contenant la classe Contenu dans lib/ext, mais cette solution ne me satisfait pas.
Je dois préciser que je n'ai ce problème qu'avec Jonas 4.10, sous Linux. J'ai refais les tests avec Jonas 4.10 sous Windows, puis avec Jonas 4.8 sous Linux ; je n'ai aucun problème avec ces configurations.
Existe-t-il une configuration de Jonas qui éviterait le problème, avec Jonas 4.10 sous Linux ?
Partager