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

时间:2014-04-07 18:27:01

标签: java java-ee ejb-3.0 jndi

我将通过以下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?

2 个答案:

答案 0 :(得分:2)

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

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

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

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


How to specify a different jndi-name than the default for an EJB in JBoss 4.2.2.GA?


已编辑:

此处有关 weblogic 的更多信息:

  

在书中" Oracle WebLogic Server" (罗伯特帕特里克写的,   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元素可以是   使用&#34。因此,如果不使用mappedName,则没有默认的jndi名称   或weblogic-ejb-jar.xml

Weblogic 10.3.5 & EJB 3 JNDI names

答案 1 :(得分:1)

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 节点