我将通过以下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?
答案 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
答案 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 节点