Lorsque je déploie une EJB3 haricot avec la norme @Stateless , @Remote annotations à mon JBoss AS 7.1.1 Je constate ce qui suit JNDI sur la sortie de la console du serveur :
22:31:43,209 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor]
(MSC service thread 1-2) JNDI bindings for session bean named HelloEJB3Bean
in deployment unit deployment "hello.jar" are as follows:
java:global/hello/HelloEJB3Bean!archetypesEjb3.IHelloEJB3
java:app/hello/HelloEJB3Bean!archetypesEjb3.IHelloEJB3
java:module/HelloEJB3Bean!archetypesEjb3.IHelloEJB3
java:jboss/exported/hello/HelloEJB3Bean!archetypesEjb3.IHelloEJB3
java:global/hello/HelloEJB3Bean
java:app/hello/HelloEJB3Bean
java:module/HelloEJB3Bean
Cependant, je trouve ensuite et appelle le bean à partir d'une classe Java autonome (en utilisant un code adapté de les tutoriels de démarrage rapide de JBoss AS 7.1.1 ) en utilisant un JNDI Chaîne du type suivant :
String jndiName = "ejb:" + appName + "/" + moduleName + "/" + distinctName
+ "/" + beanName + "!" + viewClassName
+ (stateful?"?stateful":"");
(qui n'appartient pas à l'un des espaces de noms/liaisons ci-dessus).
- Pourquoi y a-t-il autant de liaisons JNDI et quelle différence cela fait-il si j'utilise l'une ou l'autre ?
- Existe-t-il une manière standard de procéder, par exemple en utilisant la fonction ejb:/ (puisque c'est ce qui apparaît dans le tutoriel de démarrage rapide donné ci-dessus).
- Pourquoi le ejb:/ (qui existe manifestement puisque c'est ce que j'ai utilisé pour parler à mon haricot) N'EST PAS signalé dans la sortie de JBoss AS 7.1.1 ?