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 :

Erreur de sérialisation entre tomcat et JOnas


Sujet :

JOnAS Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Septembre 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 10
    Par défaut Erreur de sérialisation entre tomcat et JOnas
    Bonjour,
    j'espère que j'arriverais à expliquer mon pb clairement:

    j'effectue une requête à travers un EJBObject:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    List<DemandIndex> result = demandeRemote.findAllIndexByDate(beginDate, endDate, form.getSelTag());
    Tomcat passe la demande "remote" au serveur JONAS et celui-ci exécute la requête afin de récupèrer la liste d'objets demandés:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    public interface DemandeRemote extends EJBObject {
    (...)
    public List<DemandeIndex> findAllIndexByDate(Date beginDate, Date endDate, String selTag) throws RemoteException;
    }
    Ceci est la méthode de l'EJB

    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
     
     
    public List<DemandeIndex> findAllIndexByDate(Date beginDate, Date endDate, String selTag)throws RemoteException{
    logger.info("[DemandeBean] findAllIndexByDate() : ");
    List<DemandIndex> result;
    try {
    DemandeIndexDao demandeIndexDao = new DemandeIndexDao();
    result = demandeIndexDao.findAllIndexByDate(beginDate, endDate, selTag);
    } catch (CcipHibernateException e) {
    e.printStackTrace();
    logger.error("[DemandeBean] findAllIndexByDate() : " + e.getMessage());
    throw new RemoteException(e.getMessage());
    }
    return result;
    }
    le DemandeIndexDao effectue la requête hibernate:

    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
     
     
    public List<DemandIndex> findAllIndexByDate(Date beginDate, Date endDate, String selTag) throws CcipHibernateException {
    Criteria criteria = session.createCriteria(DemandIndex.class);
     
    (...)
     
    criteria.add(Restrictions.lt(DemandIndex.PROP_DATE, cal.getTime()));
    criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
     
    (..)
     
    results = (List<DemandeIndex>) criteria.list();
     
    return results;
    Celle-ci fonctionne puisque elle retourne une liste (avec un objet dans le ca présent) correcte.
    Par contre, Tomcat de son côté recoit une liste avec un objet (jusque la ca va) mais ses champs sont à null (ou 0 pour l'id de l'objet)

    càd:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    List<DemandIndex> result = demandeRemote.findAllIndexByDate(beginDate, endDate, form.getSelTag());
    --> result (1 demandIndex mais les chps de demandeIndex non initialisés/null)

    De plus, j'ai une erreur dans Tomcat du type:

    CAROL Error:can not load interceptors
    java.lang.ClassCastException: org.objectweb.jotm.jta.rmi.JTAInterceptorInitializer
    at org.objectweb.carol.rmi.jrmp.interceptor.JInterceptorStore.setRemoteInterceptors(JInterceptorStore.java:167)
    at org.objectweb.carol.rmi.jrmp.server.JUnicastRef.readExternal(JUnicastRef.java:322)
    at org.objectweb.carol.rmi.jrmp.server.JUnicastRef.readExternal(JUnicastRef.java:292)
    at java.io.ObjectInputStream.readExternalData(ObjectInputStream.java:1755)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1717)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
    at java.rmi.server.RemoteObject.readObject(RemoteObject.java:413)
    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:585)
    at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:946)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1809)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
    at sun.rmi.server.UnicastRef.unmarshalValue(UnicastRef.java:290)
    at org.objectweb.carol.rmi.jrmp.server.JUnicastRef.performRemoteCall(JUnicastRef.java:202)
    at org.objectweb.carol.rmi.jrmp.server.JUnicastRef.invoke(JUnicastRef.java:158)
    at org.objectweb.jonas_gen.fr.experian.ccip.core.ejb.demande.JOnASDemandeBean_1980334707Home_Stub.create(Unknown Source)
    at fr.experian.ccip.web.demande.index.action.DemandeIndexAction.locate(DemandeIndexAction.java:179)
    at fr.experian.ccip.web.demande.index.action.DemandeIndexAction.rechercheList(DemandeIndexAction.java:76)
    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:585)
    at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:266)
    at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:167)
    at fr.experian.ccip.util.web.CcipDispatchAction.execute(CcipDispatchAction.java:67)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:413)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:225)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1858)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:459)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:595)
    Pourtant cette erreur ne semble pas avoir de conséquences sur les autres requêtes du même type de l'application.

    Qqun aurait une idée?

  2. #2
    Membre chevronné 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
    Par défaut
    Ton message part d'un Tomcat vers un JOnAS c ca ?
    Le Tomcat est un tomcat embarqué dans JOnAS ou il est en standalone ?

    Sinon, verifie 3 choses :
    • est ce ue l'objet que tu transfert sur le reseau est bien serializable, j'imagine que oui, mais bon ...
    • si tu as un tomcat standalone, verifie que tu as bien la meme version de JOTM que sur JOnAS
    • verifie aussi si tu n'auras pas plusieurs JOTM disponibles dan ton application


    J'aurais tendance a pencher pour cette derniere explication: ton war aurait son java delegation model positionné à false, donc il chargerait ses classes depuis le classloader de la webapp d'abord, mais il trouve des classes de JOTM aussi dans JOnAS, ca expliquerait le ClassCastException. SI c'est bien ca, il faut enlever le jotm.jar de ton war.

  3. #3
    Membre habitué
    Inscrit en
    Septembre 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 10
    Par défaut Résolu


    J'ai résolu le problèeme juste avant ta réponse, mais en effet il y avait un peu des trois!!!!

    D'une part, mon objet était serilizable, mais pas sa classe de base!!

    Ensuite, J'avais un problème de conflit entre mes librairies qui se trouvait en double sur tomcat (le repertoire shared) et dans la webapp.

    Ca faisait une semaine que je galérais et personne autour de moi ne trouvait la réponse alors BRAVO!


    Citation Envoyé par kalysto Voir le message
    Ton message part d'un Tomcat vers un JOnAS c ca ?
    Le Tomcat est un tomcat embarqué dans JOnAS ou il est en standalone ?

    Sinon, verifie 3 choses :
    • est ce ue l'objet que tu transfert sur le reseau est bien serializable, j'imagine que oui, mais bon ...
    • si tu as un tomcat standalone, verifie que tu as bien la meme version de JOTM que sur JOnAS
    • verifie aussi si tu n'auras pas plusieurs JOTM disponibles dan ton application


    J'aurais tendance a pencher pour cette derniere explication: ton war aurait son java delegation model positionné à false, donc il chargerait ses classes depuis le classloader de la webapp d'abord, mais il trouve des classes de JOTM aussi dans JOnAS, ca expliquerait le ClassCastException. SI c'est bien ca, il faut enlever le jotm.jar de ton war.

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

Discussions similaires

  1. Lien entre Apache/Tomcat et Jonas
    Par saptmea dans le forum JOnAS
    Réponses: 2
    Dernier message: 24/01/2007, 14h49
  2. Erreur d'include entre Jvcl et Excel_2k
    Par Djob dans le forum C++Builder
    Réponses: 2
    Dernier message: 28/11/2005, 14h14
  3. Erreur E2015 : Anbiguité entre ...
    Par LoicH dans le forum C++Builder
    Réponses: 13
    Dernier message: 15/02/2005, 14h42
  4. [Tomcat]erreur au lancement de tomcat dans eclipse
    Par sebos63 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 17/12/2004, 10h40
  5. DTS erreur pendant transfert entre 2 bases
    Par jc2 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 23/11/2004, 15h31

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