在EJB 3.0中,我们在哪里提供JNDI名称?

4

我正在阅读以下网址中有关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?

2个回答

2
EJB容器中的绑定支持已扩展。EJB容器根据应用程序名称、模块名称和组件名称为EJB 3.x业务接口分配默认的JNDI绑定。您无需为EJB 3.x模块中的每个接口或EJB主页以及EJB 3.1模块中的无接口视图显式定义JNDI绑定名称。
在定义绑定时,您需要为应用程序中可引用和被引用的构件指定Java命名和目录接口(JNDI)名称。所指定的构件的jndiName值必须是限定查找名称。
您无需手动为EJB 3.x模块中的每个接口、EJB主页或无接口视图分配JNDI绑定名称。如果您没有明确指定绑定,则EJB容器会分配默认绑定。
因此,要更改名称似乎需要配置容器的特定部署描述符。
如何在JBoss 4.2.2.GA中为EJB指定不同于默认值的jndi名称?
“编辑后的内容:”
“以下是有关Weblogic的更多信息:”
“在《Oracle WebLogic Server》一书中(作者为Robert Patrick、Gregory Nyberg、Philip Aston,以及Josh Bregman和Paul Done),第6章:在WebLogic Server中构建企业JavaBean,第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 names

3
你好,edubriguenti, 我理解这个概念,但是客户端如何知道他想要查找的JNDI呢? - ranafeb14

2

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

有一个java:global节点和一个子节点web


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接