【发布时间】:2012-07-13 03:05:29
【问题描述】:
我有一个内部带有 ejb 模块和 SomeService 的 EAR 应用程序:
some-ear.ear -> some-ejb.jar -> SomeBean implements ISomeBean
在 Java EE 规范中,我看到这个 bean 的 JNDI 名称应该是
java:comp/env/ISomeService
当我在 WebLogic 10.3 上部署我的应用程序时,new InitialContext().lookup("java:comp/env/ISomeService"); 运行良好
现在我在 JBoss 4.2.3 上部署这个应用程序,我在日志中看到以下内容:
DEBUG [org.jboss.ejb3.stateless.BaseStatelessProxyFactory] Binding proxy for SomeBean in JNDI at some-ear/SomeBean/local
天哪!我的 bean 的 JNDI 名称是 some-ear/SomeBean/local 和new InitialContext().lookup("java:comp/env/ISomeService"); - 不工作new InitialContext().lookup("some-ear/SomeBean/local"); - 工作正常
现在我在 GlassFish 3.1 上部署我的应用程序,我在日志中看到以下内容:
Portable JNDI names for EJB SomeBean : [java:global/some-ear/some-jar/SomeBean ...
又是新的 JNDI 名称!
new InitialContext().lookup("java:global/some-ear/some-jar/SomeBean"); - 效果很好
你能解释一下为什么在不同的 AS 上,同一个 bean 存在不同的 JNDI 名称,为什么这个 JNDI 名称与 Java EE 规范不同?
【问题讨论】:
标签: jakarta-ee jboss glassfish weblogic jndi