当我使用标准@Stateless和@Remote注释将典型的EJB3 bean部署到我的JBoss AS 7.1.1时,我在服务器控制台输出上看到以下JNDI绑定:
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
但是,然后我使用以下类型的JNDI字符串从独立的 Java 类(使用改编自JBoss AS 7.1.1 快速入门教程的代码)中找到并调用 bean:
String jndiName = "ejb:" + appName + "/" + moduleName + "/" + distinctName
+ "/" + beanName + "!" + viewClassName
+ (stateful?"?stateful":"");
(不属于上述命名空间/绑定之一)。
- 为什么提供了这么多 JNDI 绑定,如果我使用其中的一个或另一个会有什么不同?
- 有没有标准的方法,例如可能使用ejb:/命名空间(因为这就是上面给出的快速入门教程中出现的内容)
- 为什么在 JBoss AS 7.1.1 输出中没有报告ejb:/绑定(显然存在,因为这是我用来与我的 bean 交谈的内容)?