EJB 3.1 @EJB注入POJO

Kar*_*arl 13 java ejb java-ee-6 ejb-3.1

今天下午成为一个完整的大菱鲆,似乎无法在任何地方找到答案.

使用新的EJB 3.1规范是否可以将EJB注入pojo?我知道在EJB 3.0中,@ EJB注释可用于注入EJB,但这不适用于简单的pojos.

如果不是,我必须在JNDI中查看bean,因为我知道你不能简单地使用new关键字.

提前致谢.

卡尔

Pas*_*ent 29

使用新的EJB 3.1规范是否可以将EJB注入pojo?我知道在EJB 3.0中,@ EJB注释可用于注入EJB,但这不适用于简单的pojos.

如果您使用JSR-299(Java C ontexts和D ependency I njection),即如果您的POJO是CDI托管bean,则可以将EJB注入POJO .在这种情况下,您可以这样做:

@Inject MyEJB service
Run Code Online (Sandbox Code Playgroud)

但这不是EJB 3.1功能,而是来自CDI.如果您不使用CDI,则必须进行查找.


Boz*_*zho 19

是的,使用JNDI查找.

由于您的POJO是由您创建的(我假设),因此容器不负责注入依赖项.


Lai*_*son 7

新的EJB规范(3.1)增加了为EJB指定全局JNDI名称的功能.这意味着您可以在任何地方的任何bean中使用它们.

但是,您必须执行显式JNDI查找,因为EJB 3.1容器不会知道您的POJO.

唯一的例外,我猜不适用于你,如果你的POJO真的是一个应用程序客户端,在这种情况下,提供包含EJB的字段是静态的,你可以将@EJB注释应用于它.如果这是您的情况,您应该检查整个Java EE 5规范中的应用程序客户端规则.

最后,包含JSR-299的Java EE 6可能允许您描述的内容以某种方式发生; 我不知道规格,所以不能评论它.

我希望这一切都有帮助.