首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EJB 3.1 @EJB注入POJO

EJB 3.1 @EJB注入POJO
EN

Stack Overflow用户
提问于 2010-01-07 23:28:45
回答 3查看 24.6K关注 0票数 13

使用新的EJB3.1规范,可以将EJB注入pojo吗?我知道在EJB3.0中,@EJB注解可以用来注入EJB,但这在简单的pojos上不起作用。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-01-08 00:22:35

是的,使用JNDI查找。

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

票数 19
EN

Stack Overflow用户

发布于 2010-01-08 02:19:36

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

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

唯一的例外是,如果您的POJO真的是一个应用程序客户机,那么如果包含EJB的字段是静态的,您可以对其应用@EJB注释。如果这就是您的情况,您应该查看整个JavaEE5规范中的应用程序客户机规则。

最后,包含JSR-299的Java EE 6可能允许以某种方式实现您所描述的内容;我还不了解该规范,因此无法对其进行评论。

我希望这一切都能有所帮助。

票数 7
EN

Stack Overflow用户

发布于 2010-01-08 21:43:58

我也想知道我是否可以inject EJBs into unmanaged objects。有关更多详细信息,请参阅Weld (JSR299参考实现)文档。

但您可以在存储库或工厂中手动执行依赖项注入,如下所示:

代码语言:javascript
复制
@Stateless
public PojoRespository {

  @Inject
  ResourceForPojos resource;
  @PersistenceContext
  private EntityManager em;

  public Pojo findById(Object id) {
    Pojo p = (Pojo) em.find(Pojo.class, id);
    p.setResource(resource); // injects resource
    return p;
  }

}

如果您有许多需要执行注入的方法,则可以使用拦截器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2021370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档