[JEE] Passer d'interfaces distantes à locales

Passer d'interfaces distantes à locales [JEE] - Java - Programmation

Marsh Posté le 03-07-2012 à 14:51:14    

Bonjour,
 
Après m'être documenté comme je pouvais là dessus, je cherche à repasser les EJB @Remote d'une appli JEE en EJB @Local.
L'application suit la structure Javascript<=>Servlets<=>EJB, et tout est déployé dans le même EAR, donc le passage en local est donc tout à fait possible et conseillé pour un soucis d'optimisation.
Le projet est constitué de 3 JAR : 1 pour les Sverlets/Javascript, un autre pour les interfaces des EJB, et un autre pour les EJB.
Pour rechercher les EJB une recherche de contexte est effectuée pour retrouver les classes.
 
Le problème est que concrètement je ne sais pas quoi changer à part les annotations.
 
Voici l'exemple d'un EJB :
 
Code :

Code :
  1. import interfaces.DataBeanRemote;
  2. import interfaces.EtudeBeanRemote;
  3. ...
  4. @Stateless
  5. @Remote(value=XXXBeanRemote.class)
  6. public class DataBean extends BaseBean implements DataBeanRemote {
  7.     public EDT createEDT(...) throws NamingException {
  8.         Context ctx = new InitialContext();
  9.         EtudeBeanRemote et = (EtudeBeanRemote)ctx.lookup(EtudeBeanRemote.class.getName());
  10.         donneeTierce = et.getDonnee();
  11. ...


 
 
Comme je le disais les interfaces sont tous situés dans un JAR
Code :

Code :
  1. public interface EDTBeanRemote {
  2. ...


 
Dans ce JAR sont également placés tous les objets transmis entre les Servlets et les EJB, objets tous implements Serializable bien sûr
 
Je sais qu'il faut modifier toutes les annotations @Remote en @Local, et qu'il faut sans doute supprimer tous les implements Serializable des objets, mais que faire d'autres ? Est ce qu'il faut continuer d'utiliser l'annuaire JNDI ?
 Est ce aussi simple que ça ?
 
Merci d'avance !


Message édité par VinceSSJ le 03-07-2012 à 14:54:21
Reply

Marsh Posté le 03-07-2012 à 14:51:14   

Reply

Marsh Posté le 05-07-2012 à 14:53:59    

Bon j'ai mis à jour mon appli mais ça ne marche pas
 
Pour résumé : avant j'avais mon war avec mes servlets, un jar contenant les interfaces distantes, et un autre war contenant les ejb.
Là j'ai supprimé le jar des interfaces et j'ai directement mis les interfaces dans le jar des ejb.
 
Voilà le code
 
EJB :
Code :
Sélectionner tout - Visualiser dans une fenêtre à part

Code :
  1. @Stateless(name="AdminBean", mappedName="AdminBean" )
  2. public class AdminBean extends BaseBean implements AdminLocal {
  3. ...
  4. }


 
Interface :
Code :
Sélectionner tout - Visualiser dans une fenêtre à part

Code :
  1. @Local
  2. public interface AdminLocal {
  3. ...
  4. }


 
classe appelante, j'ai essayé plusieurs choses (sachant que c'est une classe du jar ejb et non du war) :
 
Code :
Sélectionner tout - Visualiser dans une fenêtre à part

Code :
  1. public class Constantes {
  2.     private static AdminLocal ab;
  3. ....
  4.     Context ctx = new InitialContext();
  5.     ab = (AdminLocal)ctx.lookup("AdminBean" );
  6.     Constante c = ab.getConstante(BASE_DEFAUT, ressource);
  7. ...
  8. }


 
Ca ça ne marche pas et ça me sort des NameNotFound :
Code :

Code :
  1. GRAVE: Lookup failed for 'AdminBean' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming}
  2. javax.naming.NamingException: Lookup failed for 'AdminBean' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: AdminBean not found]
  3. at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:518)


 
 
Vu que je suis directement dans le jar ejb j'ai donc essayé d'injecter l'EJB dans la classe :
Code :

Code :
  1. public class Constantes {
  2.     @EJB private static AdminBean ab;
  3. ....
  4.     Constante c = ab.getConstante(BASE_DEFAUT, ressource);
  5. ....
  6. }


 
Mais là ça me sort un NullPointeur à .getConstante() ....
 
Donc comment m'y prendre ? Est ce qu'il faut déclarer les ejb dans l'annueaire JNDI pour les lookup ? Quel non entrer ?
 
 
Merci !

Reply

Marsh Posté le 05-07-2012 à 16:09:24    

C'est le bordel dans ton truc :D

 

Déjà :

 
Code :
  1. @Stateless(name="AdminBean", mappedName="AdminBean" )
  2. public class AdminBean extends BaseBean implements AdminLocal {
  3. ...
  4. }
 

Si c'est pour mapper sur un nom identique à ton EJB, tu peux virer le contenu de ton annotation.

 

Ensuite ta classe Constantes. Pour l'appel via context.lookup, c'est ton mapping qui est a priori faux. A voir sur la console de monitoring de ton serveur d'application, tu as possibilité de voir les mapping JNDI des ressources déployées.

 

Y'a quand même de grandes chances pour que ça ne soit pas "AdminBean" mais "nom-de-ton-ear/AdminBean/local". Remplace nom-de-ton-ear par son mapping si tu l'as précisé dans le descripteur de déploiement.

 

Enfin, pour l'injection EJB, le type est l'interface, pas l'EJB dans ton cas :

 
Code :
  1. @EJB private static AdminLocal ab;
 

(même si je vois pas trop l'intérêt de le rendre dispo en statique)

 


Message édité par LeRiton le 05-07-2012 à 16:09:55
Reply

Marsh Posté le 05-07-2012 à 16:21:40    

Super merci pour la réponse !!!  :)  
 
Effectivement pour le Stateless c'était des restes des essais d'avant et je n'ai pas enlever depuis  :pt1cable:  
 
Pour l'interface en static, en effet ça sert à rien de l'utiliser en statique (je viens de lire sur le net) mais les méthodes de la classe Constante sont static alors obligé :sweat:  
Et je viens de voir que depuis un Pojo pour injecter un EJB il faut plutôt @Inject en utilisant Java Contexts and Dependency Injection et non un @EJB.
 
Bref je vais déjà voir pour le JNDI et je tiens au courant ! merci en tout cas  :)  
 
 
PS:première fois que je fais du JEE donc désolé si effectivement ça peut paraitre être le bordel  :D


Message édité par VinceSSJ le 05-07-2012 à 16:23:12
Reply

Marsh Posté le 05-07-2012 à 16:25:32    

Faut déjà savoir si tu fais de l'EJB 3, les méthodes sont différentes entre les versions (EJB2.1 != EJB3).

Reply

Marsh Posté le 05-07-2012 à 16:39:28    

EJB 3  :jap:  
 
Mais d'ailleurs comment savoir concrètement quelle version est dispo ?  
Parce que je sais que ce sont des EJB 3 car c'est la personne qui a développée l'appli qui me l'a dit. Mais sans ça comment je pourrais savoir ? En regardant la version du JDK utilisée ?

Reply

Marsh Posté le 06-07-2012 à 13:38:31    

Tu peux compiler de l'EJB 2.1 avec un JDK 1.6.
 
Ton script de build (Ant, Maven) contient peut-être l'info. Le plus simple reste encore de demander autour de toi si tu bosses sur une base de code existante. Ou de regarder ledit code et spotter les différences : http://help.eclipse.org/indigo/ind [...] ejb21.html
 
Si c'est de l'EJB 3, te prend pas la tête avec les nommages JNDI, sa devrait pas être nécessaire dans 90 % des cas si tu utilises l'injection. Ta classes Constantes, elle a une bonne raison pour avoir des méthodes statiques alors qu'elle est dans ton conteneur EJB ? Ça serait pas un candidat à EJB Stateless ?

Reply

Marsh Posté le 06-07-2012 à 15:11:34    

Okay c'est noté  :)  
 
Pour les différences c'est ultra visible en fait, déjà y'avait déjà les annotations (@Stateless, @Remote etc..), et pas de descripteur de déploiement pour les EJB, donc c'est signé EJB 3 obligé je suppose.
Je précise que je travaille sous Netbeans et GlassFish 3.1.
 
Après pour les EJB, le dev utilisait JNDI pour faire des lookup pour rechercher les EJB distant, mais travaillant en local je peux me passer de tout JNDI ?
 
La classe Constante, elle était placée dans le JAR des interfaces, elle contient toutes les constantes statiques nécessaire à l'appli. Et elle contient aussi des méthodes statiques qui "construisent" les constantes pour les modules de l'appli au début de l'application.. Static puisque si ces données sont modifiées l'appli ne fonctionnera plus
 
Par exemple une méthode :

Code :
  1. private static Integer getInteger(String ressource) {
  2.         System.out.println("Constante : "+ressource);
  3.         try {
  4.             Context ctx = new InitialContext();
  5.             AdminLocal al = (AdminLocal)ctx.lookup("AdminBean/local" );
  6.             Constante c = al.getConstante(BASE_DEFAUT, ressource);
  7.             return Integer.parseInt(c.getValeur());
  8.         } catch (Exception e) {
  9.             Log.erreur(e);
  10.         }
  11.         return null;
  12.     }


 
Donc pour l'instant j'essaie juste d'accéder aux EJB avec cette classe que j'ai replacée dans le JAR des EJB (donc les servlets pour l'instant j'y ai pas touché)

Reply

Marsh Posté le 06-07-2012 à 15:21:05    

VinceSSJ a écrit :

Après pour les EJB, le dev utilisait JNDI pour faire des lookup pour rechercher les EJB distant, mais travaillant en local je peux me passer de tout JNDI ?


 
C'est bien de savoir comment ça marche, mais c'est géré pour toi.
 

VinceSSJ a écrit :

La classe Constante, elle était placée dans le JAR des interfaces, elle contient toutes les constantes statiques nécessaire à l'appli. Et elle contient aussi des méthodes statiques qui "construisent" les constantes pour les modules de l'appli au début de l'application.. Static puisque si ces données sont modifiées l'appli ne fonctionnera plus


 
Fichier de properties + EJB Stateless qui tape dedans.
 

Reply

Marsh Posté le 06-07-2012 à 15:46:13    

Est ce que tu pourrais détailler un peu SVP ? Je ne comprends pas tout.
 
"C'est bien de savoir comment ça marche, mais c'est géré pour toi. "
je n'en comprends pas le sens cherché.
 
"Fichier de properties + EJB Stateless qui tape dedans. "
Que veux tu dire par là ? que la classe constante se comporte comme un fichier properties ? Oui on va dire que c'est ça  :jap:
 
 
EDIT :
En fait j'avais pas vu mais au lancement de l'appli dans le log tous les noms JNDI s'affichent  :pt1cable:  
 

Code :
  1. INFO: EJB5181:Portable JNDI names for EJB AdminBean: [java:global/EAR_GdP2/ProjetGdP-ejb/AdminBean, java:global/EAR_GdP2/ProjetGdP-ejb/AdminBean!interfaces.AdminLocal]


 
Donc j'ai mis mes lookup adaptés :
 

Code :
  1. AdminLocal al = (AdminLocal)ctx.lookup("java:global/EAR_GdP2/ProjetGdP-ejb/AdminBean!interfaces.AdminLocal" );


 
Sauf que là j'ai une autre erreur.. GlassFish ne peut pas créer le bean...
 

Code :
  1. GRAVE: EJB5070: Exception creating stateless session bean : [AdminBean]
  2. ATTENTION: EJB5184:A system exception occurred during an invocation on EJB AdminBean, method: public util.data.Constante beans.AdminBean.getConstante(java.lang.String,java.lang.String)
  3. ATTENTION: javax.ejb.EJBException: javax.ejb.EJBException: javax.ejb.CreateException: Could not create stateless EJB
  4. at com.sun.ejb.containers.StatelessSessionContainer._getContext(StatelessSessionContainer.java:454)
  5. at com.sun.ejb.containers.BaseContainer.getContext(BaseContainer.java:2547)
  6. at com.sun.ejb.containers.BaseContainer.preInvoke(BaseContainer.java:1899)
  7. at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:212)
  8. at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88)
  9. at $Proxy330.getConstante(Unknown Source)
  10. at util.Constantes.getString(Constantes.java:331)
  11. at util.Constantes.<clinit>(Constantes.java:275)
  12. at webGdP.servlet.filtre.AccessFilter.init(AccessFilter.java:98)
  13. at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:264)
  14. at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:120)
  15. at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4685)
  16. at org.apache.catalina.core.StandardContext.start(StandardContext.java:5377)
  17. at com.sun.enterprise.web.WebModule.start(WebModule.java:498)
  18. at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:917)
  19. at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:901)
  20. at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:733)
  21. at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:2018)
  22. at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1669)
  23. at com.sun.enterprise.web.WebApplication.start(WebApplication.java:109)
  24. at org.glassfish.internal.data.EngineRef.start(EngineRef.java:130)
  25. at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:269)
  26. at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:301)
  27. at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:461)
  28. at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
  29. at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:389)
  30. at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:353)
  31. at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:363)
  32. at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1085)
  33. at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:95)
  34. at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1291)
  35. at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1259)
  36. at org.glassfish.deployment.admin.ReDeployCommand.execute(ReDeployCommand.java:126)
  37. at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:348)
  38. at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:363)
  39. at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1085)
  40. at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:95)
  41. at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1291)
  42. at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1259)
  43. at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:461)
  44. at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:212)
  45. at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:179)
  46. at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117)
  47. at com.sun.enterprise.v3.services.impl.ContainerMapper$Hk2DispatcherCallable.call(ContainerMapper.java:354)
  48. at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
  49. at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:849)
  50. at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746)
  51. at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045)
  52. at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228)
  53. at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
  54. at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
  55. at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
  56. at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
  57. at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
  58. at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
  59. at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
  60. at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
  61. at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
  62. at java.lang.Thread.run(Thread.java:662)
  63. Caused by: javax.ejb.EJBException: javax.ejb.CreateException: Could not create stateless EJB
  64. at com.sun.ejb.containers.StatelessSessionContainer$SessionContextFactory.create(StatelessSessionContainer.java:726)
  65. at com.sun.ejb.containers.util.pool.NonBlockingPool.getObject(NonBlockingPool.java:247)
  66. at com.sun.ejb.containers.StatelessSessionContainer._getContext(StatelessSessionContainer.java:449)
  67. ... 58 more
  68. Caused by: javax.ejb.CreateException: Could not create stateless EJB
  69. at com.sun.ejb.containers.StatelessSessionContainer.createStatelessEJB(StatelessSessionContainer.java:534)
  70. at com.sun.ejb.containers.StatelessSessionContainer.access$000(StatelessSessionContainer.java:95)
  71. at com.sun.ejb.containers.StatelessSessionContainer$SessionContextFactory.create(StatelessSessionContainer.java:724)
  72. ... 60 more
  73. Caused by: java.lang.IllegalStateException: Exception lors de la tentative d'injection de l'élément Remote ejb-ref name=util.BaseBean/lcf,Remote 3.x interface =beans.ConnexionFactory,ejb-link=null,lookup=,mappedName=,jndi-name=beans.ConnexionFactory,refType=Session dans class util.BaseBean : Lookup failed for 'java:comp/env/util.BaseBean/lcf' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming}
  74. at org.glassfish.weld.services.InjectionServicesImpl.aroundInject(InjectionServicesImpl.java:137)
  75. at org.jboss.weld.injection.InjectionContextImpl.run(InjectionContextImpl.java:46)
  76. at org.jboss.weld.bean.SessionBean$1.inject(SessionBean.java:172)
  77. at org.glassfish.weld.services.JCDIServiceImpl.injectEJBInstance(JCDIServiceImpl.java:223)
  78. at com.sun.ejb.containers.BaseContainer.injectEjbInstance(BaseContainer.java:1678)
  79. at com.sun.ejb.containers.StatelessSessionContainer.createStatelessEJB(StatelessSessionContainer.java:494)
  80. ... 62 more
  81. Caused by: com.sun.enterprise.container.common.spi.util.InjectionException: Exception lors de la tentative d'injection de l'élément Remote ejb-ref name=util.BaseBean/lcf,Remote 3.x interface =beans.ConnexionFactory,ejb-link=null,lookup=,mappedName=,jndi-name=beans.ConnexionFactory,refType=Session dans class util.BaseBean : Lookup failed for 'java:comp/env/util.BaseBean/lcf' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming}
  82. at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:703)
  83. at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.inject(InjectionManagerImpl.java:470)
  84. at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl.injectInstance(InjectionManagerImpl.java:171)
  85. at org.glassfish.weld.services.InjectionServicesImpl.aroundInject(InjectionServicesImpl.java:130)
  86. ... 67 more
  87. Caused by: javax.naming.NamingException: Lookup failed for 'java:comp/env/util.BaseBean/lcf' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NamingException: Exception resolving Ejb for 'Remote ejb-ref name=util.BaseBean/lcf,Remote 3.x interface =beans.ConnexionFactory,ejb-link=null,lookup=,mappedName=,jndi-name=beans.ConnexionFactory,refType=Session' .  Actual (possibly internal) Remote JNDI name used for lookup is 'beans.ConnexionFactory#beans.ConnexionFactory' [Root exception is javax.naming.NamingException: Lookup failed for 'beans.ConnexionFactory#beans.ConnexionFactory' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: beans.ConnexionFactory#beans.ConnexionFactory not found]]]
  88. at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:518)
  89. at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455)
  90. at javax.naming.InitialContext.lookup(InitialContext.java:392)
  91. at javax.naming.InitialContext.lookup(InitialContext.java:392)
  92. at com.sun.enterprise.container.common.impl.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:599)
  93. ... 70 more
  94. Caused by: javax.naming.NamingException: Exception resolving Ejb for 'Remote ejb-ref name=util.BaseBean/lcf,Remote 3.x interface =beans.ConnexionFactory,ejb-link=null,lookup=,mappedName=,jndi-name=beans.ConnexionFactory,refType=Session' .  Actual (possibly internal) Remote JNDI name used for lookup is 'beans.ConnexionFactory#beans.ConnexionFactory' [Root exception is javax.naming.NamingException: Lookup failed for 'beans.ConnexionFactory#beans.ConnexionFactory' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: beans.ConnexionFactory#beans.ConnexionFactory not found]]
  95. at com.sun.ejb.EjbNamingReferenceManagerImpl.resolveEjbReference(EjbNamingReferenceManagerImpl.java:191)
  96. at com.sun.enterprise.container.common.impl.ComponentEnvManagerImpl$EjbReferenceProxy.create(ComponentEnvManagerImpl.java:1109)
  97. at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:776)
  98. at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:744)
  99. at com.sun.enterprise.naming.impl.JavaURLContext.lookup(JavaURLContext.java:169)
  100. at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:498)
  101. ... 74 more
  102. Caused by: javax.naming.NamingException: Lookup failed for 'beans.ConnexionFactory#beans.ConnexionFactory' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: beans.ConnexionFactory#beans.ConnexionFactory not found]
  103. at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:518)
  104. at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455)
  105. at javax.naming.InitialContext.lookup(InitialContext.java:392)
  106. at javax.naming.InitialContext.lookup(InitialContext.java:392)
  107. at com.sun.ejb.EjbNamingReferenceManagerImpl.resolveEjbReference(EjbNamingReferenceManagerImpl.java:186)
  108. ... 79 more
  109. Caused by: javax.naming.NameNotFoundException: beans.ConnexionFactory#beans.ConnexionFactory not found
  110. at com.sun.enterprise.naming.impl.TransientContext.doLookup(TransientContext.java:248)
  111. at com.sun.enterprise.naming.impl.TransientContext.lookup(TransientContext.java:215)
  112. at com.sun.enterprise.naming.impl.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:77)
  113. at com.sun.enterprise.naming.impl.LocalSerialContextProviderImpl.lookup(LocalSerialContextProviderImpl.java:119)
  114. at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:505)
  115. ... 83 more


 
Mais quand je regarde à la fin je m'aperçois que ça vient des autres lookup que je n'ai pas encore fait donc je persévère  :jap:  
 


Message édité par VinceSSJ le 06-07-2012 à 16:28:54
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed