gpt4 book ai didi

jakarta-ee - 不同应用服务器上的 JNDI 查找

转载 作者:行者123 更新时间:2023-12-01 10:05:22 26 4
gpt4 key购买 nike

我有一个 EAR 应用程序,里面有一个 ejb 模块和 SomeService:

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 规范不同吗?

最佳答案

JavaEE 命名困惑是一个长期存在的问题,直到 JavaEE6 规范解决了它。现在我们有了用于 Java EE AppServer 的各种组件的标准 namespace 。公平地说,您应该比较 Java EE 6 AppServer,例如 JBossAS7、Websphere 8、Glassfish 3.1。

关于jakarta-ee - 不同应用服务器上的 JNDI 查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11467514/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com