Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 两个嵌套的EJB bean—只有第一个获得Entity manager注入_Java_Jpa_Ejb 3.0 - Fatal编程技术网

Java 两个嵌套的EJB bean—只有第一个获得Entity manager注入

Java 两个嵌套的EJB bean—只有第一个获得Entity manager注入,java,jpa,ejb-3.0,Java,Jpa,Ejb 3.0,我有一个stateful和一个singelton EJB Bean 有状态bean使用实体管理器(注入)并调用singelton bean。 singelton bean使用实体管理器(注入) 如果我尝试从有状态bean调用singelton bean,singelton bean不会被注入实体管理器 不可能同时在两个bean中获得实体管理器吗 EJB Bean @Singleton @LocalBean public class AllocationPlanController impleme

我有一个stateful和一个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 2

@Stateful
@LocalBean
public class AllocationController implements AllocationControllerRemote {

@PersistenceContext
private EntityManager em;

private Allocation allocation;
private AllocationPlan allocationPlan;

AllocationPlanController allocationPlanController = new AllocationPlanController();

EntityManager
不会被注入到
AllocationPlanController
中,因为您正在使用它的构造函数“手动”创建
AllocationPlanController
实例。您应该将
AllocationPlanController
注入
AllocationController
bean,让容器管理它的生命周期。

不要通过构造函数创建新的AllocationPlanController,请尝试这样注释它:

@EJB
AllocationPlanController allocationPlanController;

然后容器将把这个bean注入您的
AllocationController
,由于容器将注入它创建的bean,它已经注入了它的依赖项,因此您将为
em

找到一个非空值。您能发布一些代码吗?也许看看你是如何注射和调用豆子的,任何有助于进一步澄清的东西