无法从其他EJB2查找EJB2,但可以从servlet执行此操作

时间:2011-05-14 18:51:20

标签: java ejb jndi lookup ejb-2.x

我在GlassFish(J2EE_1.4)上的NetBeans中开发企业项目。 在我的项目中有一些实体bean,几个会话bean和消息驱动的bean。 我使用来自servlet的实体bean(在同一个项目中,来自web-component),如下所示:

InitialContext ic;
ic = new InitialContext();
UserLocalHome userHome = (UserLocalHome) ic.lookup("java:comp/env/ejb/User");

一切正常。 但是当我尝试从会话bean或MDB进行查找时,我得到了命名错误。没有bean可以查找任何其他bean。 Web部署描述符中有一些引用,但AFAIK不需要为EJB定义引用。 此外,所有实体bean都只有本地接口。

1 个答案:

答案 0 :(得分:1)

每个EJB都有自己的java:comp命名空间,因此在J2EE 1.4中,每个<entity/><message-driven/>必须有自己的<ejb-ref/>(或<ejb-local-ref/>)。

在JavaEE 6中,单个EJB(或servlet)可以声明带有java:module(或java:app)前缀的ejb-ref,以允许该范围内的任何组件能够共享参考。