Ily*_*lya 3 jboss weblogic jndi glassfish java-ee
我有一个内置ejb模块的EAR应用程序和SomeService:
some-ear.ear -> some-ejb.jar -> SomeBean implements ISomeBean
Run Code Online (Sandbox Code Playgroud)
在Java EE规范中,我看到这个bean的JNDI名称应该是
java:comp/env/ISomeService
Run Code Online (Sandbox Code Playgroud)
当我部署我的应用程序上的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
Run Code Online (Sandbox Code Playgroud)
我的天啊!我的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 ...
Run Code Online (Sandbox Code Playgroud)
再次新的JNDI名称!
new InitialContext().lookup("java:global/some-ear/some-jar/SomeBean"); - 效果很好
你能解释一下为什么在不同的AS上存在同一个bean的不同JNDI名称,以及为什么这个JNDI名称与Java EE规范不同?
在JavaEE6规范解决之前,JavaEE命名混乱是一个长期问题.现在我们为Java EE AppServer的各种组件提供了标准名称空间.公平地说,您应该比较Java EE 6 AppServers,如JBossAS7,Websphere 8,Glassfish 3.1.
| 归档时间: |
|
| 查看次数: |
2997 次 |
| 最近记录: |