IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JOnAS Java Discussion :

ClassNotfoundException avec JMS sous Jonas 4.10


Sujet :

JOnAS Java

  1. #1
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut ClassNotfoundException avec JMS sous Jonas 4.10
    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 :

    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)
    Par contre, le MDB reçoit bien le message et est capable de le lire.

    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 ?

  2. #2
    Membre VIP Avatar de kalysto
    Profil pro
    Développeur
    Inscrit en
    Mars 2003
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mars 2003
    Messages : 442
    Points : 568
    Points
    568
    Par défaut
    En fait, c'est juste une trace mal placée de JORAM...
    Ca fait peur, mais ca ne porte pas du tout à conséquences, d'ailleurs, tu t'en es rendu compte, ton MDB recoit bien le message et lit bien l'objet.

    Il faut trouver le bon logger de JORAM et placer son niveau à ERROR pour ne plus voir le message.

  3. #3
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut
    En fait, la trace est au niveau ERROR. IL faut donc que je mette le logger en FATAL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    logger.org.objectweb.joram.mom.Proxy.level FATAL
    C'est dommage, on risque de passer à coté d'autres erreurs.

    D'après la réponse que j'ai eue sur la ML jonas-fr, le problème a été corrigé dans la version trunk de JORAM.

  4. #4
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut
    Comme je suis curieux de nature, et que j'ai comprendre, j'ai une question subsidiaire :

    Pourquoi est-ce que je n'ai pas le problème sous Windows, avec la même version 4.10.3 ???
    Est-ce le classloader qui fonctionne différemment ou la sérialisation qui est différente, ou ...?

  5. #5
    Membre VIP Avatar de kalysto
    Profil pro
    Développeur
    Inscrit en
    Mars 2003
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mars 2003
    Messages : 442
    Points : 568
    Points
    568
    Par défaut
    Pas de differences particulieres.
    A mon avis, dans ta version windows, tu dois avoir un jar avec les classes de tes ObjectMessage qui doit etre dans les classloaders hauts de JOnAS (lib/ext, ...).

  6. #6
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut
    Effectivement.

    Je ne sais pas pourquoi je suis passé à coté du message sous Windows. Il va falloir que j'enquête sur mon propre déploiement...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur de pool avec EJB3 et quartz sous JoNAS
    Par death_style dans le forum JOnAS
    Réponses: 4
    Dernier message: 12/12/2011, 07h53
  2. Pb avec Metro Web Services sous JOnAS
    Par jpminetti dans le forum JOnAS
    Réponses: 2
    Dernier message: 16/12/2009, 17h00
  3. Problème database avec Juddi sous JOnAS
    Par reneguenon dans le forum Services Web
    Réponses: 1
    Dernier message: 02/10/2009, 23h21
  4. Problème avec CopyDir sous D5
    Par Houben Jacques dans le forum Langage
    Réponses: 3
    Dernier message: 26/05/2003, 22h02
  5. Utiliser Borland C++ avec Emacs sous Windows
    Par Eikichi dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 02/03/2003, 08h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo