Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1400 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [JEE] Passer d'interfaces distantes à locales

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JEE] Passer d'interfaces distantes à locales

n°2147906
VinceSSJ
Posté le 03-07-2012 à 14:51:14  profilanswer
 

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
mood
Publicité
Posté le 03-07-2012 à 14:51:14  profilanswer
 

n°2148275
VinceSSJ
Posté le 05-07-2012 à 14:53:59  profilanswer
 

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 !

n°2148289
LeRiton
Posté le 05-07-2012 à 16:09:24  profilanswer
 

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
n°2148299
VinceSSJ
Posté le 05-07-2012 à 16:21:40  profilanswer
 

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
n°2148301
LeRiton
Posté le 05-07-2012 à 16:25:32  profilanswer
 

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

n°2148311
VinceSSJ
Posté le 05-07-2012 à 16:39:28  profilanswer
 

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 ?

n°2148417
LeRiton
Posté le 06-07-2012 à 13:38:31  profilanswer
 

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 ?

n°2148445
VinceSSJ
Posté le 06-07-2012 à 15:11:34  profilanswer
 

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é)

n°2148449
LeRiton
Posté le 06-07-2012 à 15:21:05  profilanswer
 

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.
 

n°2148453
VinceSSJ
Posté le 06-07-2012 à 15:46:13  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [JEE] Passer d'interfaces distantes à locales

 

Sujets relatifs
[Résolu] Passer une variable dans un includePhP: Comment passer d'une BDD SQL à SQLite?
resoudre et passer au langage cbouton arrêt - finir de lire un clip avant de passer à un autre
[BATCH] Passer une commande en argument à l'appel de cmd.exepasser un argument d'un JFrame à un autre
Quel est l'équivalent de Html2PDF en JEE ?Etudiante ayant besoin d'aide JEE !!!!!!
Passer div id sur une event onclick a du PHPUSB : faire passer le PC pour un "périphérique"
Plus de sujets relatifs à : [JEE] Passer d'interfaces distantes à locales


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR