我有一个有状态的和一个singelton EJB Bean。
有状态bean使用实体管理器(注入)并调用singelton bean。 singelton bean使用实体管理器(注入)。
如果我尝试从有状态bean调用singelton bean,则singelton bean不会注入实体管理器。
是否不可能同时在两个bean中获得实体管理器?
EJB Bean
@Singleton
@LocalBean
public class AllocationPlanController implements AllocationPlanControllerRemote {
@PersistenceContext
private EntityManager em;
EJB Bean二
@Stateful
@LocalBean
public class AllocationController implements AllocationControllerRemote {
@PersistenceContext
private EntityManager em;
private Allocation allocation;
private AllocationPlan allocationPlan;
AllocationPlanController allocationPlanController = new AllocationPlanController();
答案 0 :(得分:3)
EntityManager
未注入AllocationPlanController
,因为您“手动”使用它的构造函数创建AllocationPlanController
实例。您应该将AllocationPlanController
注入AllocationController
bean并让容器管理它的生命周期。
答案 1 :(得分:0)
不要通过其构造函数创建新的AllocationPlanController,而是尝试对其进行注释:
@EJB
AllocationPlanController allocationPlanController;
然后容器会将该bean注入您的AllocationController
,并且由于容器将注入它创建的bean,它将已经注入了它的依赖项,因此您将找到{{{{ 1}}。