【问题标题】:JNDI lookup on different application servers不同应用服务器上的 JNDI 查找
【发布时间】: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


    【解决方案1】:

    JavaEE 命名混乱是一个由来已久的问题,直到 JavaEE6 规范解决了这个问题。现在我们有了 Java EE AppServer 的各种组件的标准命名空间。公平地说,您应该比较 Java EE 6 AppServer,例如 JBossAS7、Websphere 8、Glassfish 3.1。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-06
    • 2014-05-08
    • 2020-10-14
    • 1970-01-01
    • 1970-01-01
    • 2020-01-21
    • 1970-01-01
    • 2014-05-14
    相关资源
    最近更新 更多