【问题标题】:Injecting Entity Bean in to EJB Bean using @EJB使用 @EJB 将实体 Bean 注入到 EJB Bean
【发布时间】:2013-06-03 05:57:25
【问题描述】:

我的项目中有无状态实体 Beans(EJB 3.x) 和 EJB Beans(EJB 2.x) 和其他类。我想将实体 Bean 注入 EJB Bean。所以,到目前为止,我能够使用 JNDI 方式注入它,即 (BeanName#completename) 但我想使用 @EJB 注入它,就像我们在另一个实体 bean 中注入实体 bean 而没有任何 JNDI 查找一样。这两个 bean 都是不同模块的一部分,但部署在同一台服务器上。我正在使用带有 eclipselink 的 weblogic。

【问题讨论】:

    标签: ejb weblogic eclipselink ejb-3.0 ejb-2.x


    【解决方案1】:

    实体 bean 永远不会注入 EJB bean。您可以使用 EntityManager 对实体 bean 执行数据库操作。要使用数据库操作实体,必须与 EntityManager 持久化上下文相关联。所以你不能使用你的实体,直到它不处于持久状态。

    所有事务范围的持久化上下文都是通过将@PersistentContext 注入到EntityManager 对象来配置的,就像这样,

    @PersistenceContext(name="PersistentUnitName")
    private EntityManager entityManager;
    

    【讨论】:

      【解决方案2】:

      您使用的是 EJB 3 还是 EJB 2? EclipseLink 不支持 EJB 2 EntityBean,仅支持 EJB 3 实体。

      你不能注入一个Entity bean,它没有意义,它们必须通过EntityManager从数据库中查询。您可以使用 @PersistenceContext 注入 EntityManager。

      看,

      http://en.wikibooks.org/wiki/Java_Persistence/Runtime#Java_Enterprise_Edition

      【讨论】:

      • 我的项目同时包含 EJB 3 和 EJB 2。简单来说,我试图在 EJB 2 中注入 EJB 3 引用。Eclipse Link 仅用于 EJB 3。
      猜你喜欢
      • 2014-10-12
      • 1970-01-01
      • 1970-01-01
      • 2015-02-12
      • 2014-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多