-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 7 posts ] 
Author Message
 Post subject: hibernate 3 et Ejb (MarshallException)
PostPosted: Fri Sep 29, 2006 11:08 pm 
Newbie

Joined: Fri Sep 29, 2006 7:13 am
Posts: 5
Bonjour,

j'ai un petit soucis depuis plus d'une semaine avec hibernate 3 et Ejb.

je m'explique:

je fais des appels des méthodes à partir d'un client ejb et dans mon programme client je ne peux appeler qu'une seule fois la methode, la deuxième plante.
voici le code:
Object o = ctx.lookup("ejb/RSDService2");
RSDServiceHome home = (RSDServiceHome) PortableRemoteObject.narrow(
o, RSDServiceHome.class);
RSDService bean = (RSDService) home.create();

RegionTO regionTO = bean.rechercherRegionParId(1);
System.out.println (regionTO.getNom());
regionTO = bean.rechercherRegionParId(2);
System.out.println(regionTO.getNom());
voici les logs:

REGION SALES FINANCES

java.rmi.MarshalException : CORBA MARSHAL 1229125786 No; nested exception is:
org.omg.CORBA.MARSHAL: Unable to read value from underlying bridge : Unable to load Class long : null vmcid: 0x4942f000 minor code: 2202 completed: No
at com.sun.corba.se.internal.iiop.ShutdownUtilDelegate.mapSystemException(ShutdownUtilDelegate.java:100)
at javax.rmi.CORBA.Util.mapSystemException(Util.java:65)
at fr.gemb.rsd.service._RSDService_Stub.rechercherRegionParId (_RSDService_Stub.java:350)
at TestRSDService.main(TestRSDService.java:40)
Caused by: org.omg.CORBA.MARSHAL: Unable to read value from underlying bridge : Unable to load Class long : null vmcid: 0x4942f000 minor code: 2202 completed: No
at com.ibm.rmi.iiop.CDRInputStream.read_value(CDRInputStream.java:1745)
at fr.gemb.rsd.service._RSDService_Stub.rechercherRegionParId(_RSDService_Stub.java:336)
... 1 more
_________________________________________________________________________

j'ai essayé d'inverser les appels et le resultat est toujours la même c-a-d qu'il n'y a que la premiere méthode qui passe.

Avez-vous une idée du problème?
remarque ce problème se produit depuis la migration des DAO (hibernate 2 vers hibernate 3)


Merci d'avance pour votre aide..


Top
 Profile  
 
 Post subject: hibernate 3 et Ejb (chargement des collections)
PostPosted: Mon Oct 02, 2006 7:38 am 
Newbie

Joined: Fri Sep 29, 2006 7:13 am
Posts: 5
Bonjour à tous,

j'ai fais des tests pour debugger le problème et a priori ça vient des collections qui se trouvent dans mon objet RegionTO.

car j'ai essayé de faire des methodes tests dans Ejb qui renvoi les éléments de l'objet RegionTO,: et lorsque je récupere des String ou autre , tout va bien? mais lorsque je recupere la collection qui se trouve dans RegionTO.
j'ai la même problèmatique, c-ad que si j'essaye de lancer deux fois la même methodes, elles plantes dans la deuxieme appel.

Merci d'avance pour votre AIDE!!


Top
 Profile  
 
 Post subject:
PostPosted: Mon Oct 02, 2006 9:11 am 
Newbie

Joined: Mon Oct 02, 2006 6:10 am
Posts: 6
Est-ce-que tu as essayé de faire un ctx.lookup pour chaque requête ?
C-a-d qqch du genre :

-----------------------------------------------------------------------------------------
RSDServiceHome home = (RSDServiceHome) PortableRemoteObject.narrow(
ctx.lookup("ejb/RSDService2"), RSDServiceHome.class);
RSDService bean = (RSDService) home.create();
RegionTO regionTO = bean.rechercherRegionParId(1);
System.out.println (regionTO.getNom());

RSDServiceHome home2 = (RSDServiceHome) PortableRemoteObject.narrow(
ctx.lookup("ejb/RSDService2"), RSDServiceHome.class);
RSDService bean2 = (RSDService) home.create();
regionTO = bean2.rechercherRegionParId(2);
System.out.println(regionTO.getNom());
-----------------------------------------------------------------------------------------
Ou encore de mettre tout ce qui est identique dans une fonction et d'appeler cette fonction ?
En clair :

final RegionTO getRegionTO( int varNumber ){
RSDServiceHome home = (RSDServiceHome) PortableRemoteObject.narrow( ctx.lookup("ejb/RSDService2"),
RSDServiceHome.class);
return (RSDService) home.create().rechercherRegionParId( varNumber );
}

et aprés faire un appel du genre quand tu en as besoin :
System.out.println( getRegionTO( ).getNom() );
System.out.println( getRegionTO( ).getNom() );

... Je t'avouerai que les logs ne me parlent pas beaucoup ...


Top
 Profile  
 
 Post subject:
PostPosted: Mon Oct 02, 2006 9:11 am 
Newbie

Joined: Mon Oct 02, 2006 6:10 am
Posts: 6
Est-ce-que tu as essayé de faire un ctx.lookup pour chaque requête ?
C-a-d qqch du genre :

-----------------------------------------------------------------------------------------
RSDServiceHome home = (RSDServiceHome) PortableRemoteObject.narrow(
ctx.lookup("ejb/RSDService2"), RSDServiceHome.class);
RSDService bean = (RSDService) home.create();
RegionTO regionTO = bean.rechercherRegionParId(1);
System.out.println (regionTO.getNom());

RSDServiceHome home2 = (RSDServiceHome) PortableRemoteObject.narrow(
ctx.lookup("ejb/RSDService2"), RSDServiceHome.class);
RSDService bean2 = (RSDService) home.create();
regionTO = bean2.rechercherRegionParId(2);
System.out.println(regionTO.getNom());
-----------------------------------------------------------------------------------------
Ou encore de mettre tout ce qui est identique dans une fonction et d'appeler cette fonction ?
En clair :

final RegionTO getRegionTO( int varNumber ){
RSDServiceHome home = (RSDServiceHome) PortableRemoteObject.narrow( ctx.lookup("ejb/RSDService2"),
RSDServiceHome.class);
return (RSDService) home.create().rechercherRegionParId( varNumber );
}

et aprés faire un appel du genre quand tu en as besoin :
System.out.println( getRegionTO( ).getNom() );
System.out.println( getRegionTO( ).getNom() );

... Je t'avouerai que les logs ne me parlent pas beaucoup ...


Top
 Profile  
 
 Post subject:
PostPosted: Mon Oct 02, 2006 10:25 am 
Newbie

Joined: Fri Sep 29, 2006 7:13 am
Posts: 5
tout d'abord merci beaucoup pour ta réponse.

oui, j'ai déja essayé et même résultat.

en faite j'ai fais ce petit client juste pour tester le EJB pendant la phase de DEV (migration hibernate2 vers 3),

car ils y a plusieurs applications qui utilisent ce EJB.Bref!!

sinon effectivement le log est assez difficile à dechiffrer!!!

pour info! j'utilise WAS 5.01 et JDK IBM 1.4.1 et hibernate 3.1.3.

par dépis j'ai même essayé la derniere version d'hibernate 3.2.0rc4.

comme je te l'ai dis j'ai des doutes , j'ai vraiment l'impression qu'il y a un soucis avec les collections.

est ce que tu penses qu'il y a un problème avec le flush.

car ce bug ne se produit qu'avec hibernate 3.


Merci pour ta réponse d'avance,


Top
 Profile  
 
 Post subject:
PostPosted: Mon Oct 02, 2006 10:32 am 
Newbie

Joined: Fri Sep 29, 2006 7:13 am
Posts: 5
ah j'ai oublié de dire!!

j'ai vu les trace de log du serveur, et je ne vois pas d'erreur.

les transcations sont bien abouti du coter serveur


voila?????


Top
 Profile  
 
 Post subject: SOLUTION et QUESTION
PostPosted: Wed Oct 04, 2006 8:12 am 
Newbie

Joined: Fri Sep 29, 2006 7:13 am
Posts: 5
Bonjour à tous,

j'ai trouvé la solution.

c'est juste un problème dans le chargement des objets (lazy loading).

en faite il y a une difference entre hibernate 2 et hibernate 3.
les chargements d'objets avec hibernate 3 sont par defaut tardifs (lazy est TRUE).


pour ma migration, il a fallu juste modifier dans les fichiers de mapping la valeur de l'attribut default-lazy.
le rendre non tardif "non-paresseux" c-à-d (lazy est FALSE)

voici l'exemple: <hibernate-mapping default-lazy="false">

par contre j'attire l'attention des developpeurs d'HIBERNATE 3 :

Ayant deux questions à vous posez:
1- pourquoi lors de l'excution d'un client EJB, nous avons besoin des JARs d'hibernate???? ce que je trouve ça bizzare!!
2- les messages d'erreur ne sont pas toujours explicite avec les clients EJB Y-a-t il quelqu'un qui travail sur ce sujet???

je remercie d'avance tous ceux que repondrons à mes questions.

Bonne journée à vous.


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 7 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.