繁体   English   中英

我们在EJB 3.0中提供JNDI名称的位置?

[英]where do we provide the JNDI name in EJB 3.0?

我将通过以下URL浏览EJB的示例文档

http://docs.oracle.com/cd/E11035_01/wls100/ejb30/examples.html#wp1200600

据我所知,在EJB 2.0中,我们在ejb-jar.xml或weblogic-ejb-jar.xml文件中的部署描述符中给出了JNDI名称,但在EJB 3.0中,我找不到包含JNDI名称的描述符。

您能否建议我们在哪里提供JNDI和EJB名称,以便客户端可以调用EJB?

扩展了EJB容器中的绑定支持。 EJB容器根据应用程序名称,模块名称和组件名称为EJB 3.x业务接口分配缺省JNDI绑定。 您不必为EJB 3.x模块中的每个接口或EJB主目录或EJB 3.1模块中的无接口视图显式定义JNDI绑定名称。

定义绑定时,可以为应用程序中的可引用和引用工件指定Java命名和目录接口(JNDI)名称。 为工件指定的jndiName值必须是限定的查找名称。

您无需为EJB 3.x模块中的企业bean上的每个接口,EJB主目录或无接口视图手动分配JNDI绑定名称 如果未显式分配绑定,EJB容器将分配默认绑定。

因此,它似乎更改了为容器配置特定部署描述符所需的名称。


如何在JBoss 4.2.2.GA中为EJB指定一个不同于jdei-name的jndi-name?


编辑:

这里有关于weblogic的更多信息:

在“Oracle WebLogic Server”一书中(由Robert Patrick,Gregory Nyberg和Philip Aston编写,与Josh Bregman和Paul Done一起编写)第6章:在WebLogic Server中构建Enterprise JavaBeans Page 194“WebLogic Server提供了两种映射会话bean的选项远程业务接口到全局JNDI树。映射可以在weblogic-ejb-jar.xml部署描述符中指定,或者可以使用@Stateless或@Stateful注释的mappedName元素。 因此,如果不使用mappedName或weblogic-ejb-jar.xml,则没有默认的jndi名称

Weblogic 10.3.5和EJB 3 JNDI名称

WebLogic 12 (其他服务器可能采取不同的行为)

使用@EJB注释时,默认情况下容器会将名称分配给bean

@Singleton
@Startup
public class PoolOracleBean {
/** some code **/
}

它可以通过代码访问:

InitialContext initialContext = new InitialContext();
Context context = (Context)initialContext.lookup("java:global/web");
PoolOracleBean pool = (PoolOracleBean)context.lookup("PoolOracleBean");
Connection connection = pool.getConnection();
...

在控制台中获取所有带注释的@EJB的列表:

Environement --> Servers --> "server name" --> View JNDI Tree

有一个带有web子节点的java:global节点

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM