【发布时间】:2012-10-26 08:08:59
【问题描述】:
我知道使用@EJB 注解的注入只能在 EJB 类、servlet 或 JSF 托管 bean 中使用,但同时我需要在 POJO 类中拥有某个注入业务接口的实例,所以我想到了以下操作:
在我的 JSF 托管 bean 中
@EJB BusinessInterfaceLocal businessInterface;
private void someMethod(){
PojoInterface pojo = new PojoClass(this.businessInterface);
}
在我的 POJO 类中我有这个构造函数
BusinessInterfaceLocal businessInterface;
public PojoClass(BusinessInterfaceLocal businessInterface){
this.businessInterface = businessInterface;
//The following throws a Null Pointer Exception
this.businessInterface.someMethodCall();
}
上述方法不应该正常工作吗?但事实并非如此,PojoClass 中的 businessInterface 对象被评估为 null,从而引发空指针异常。
我希望有人能指出我做错了什么。
提前致谢。
【问题讨论】:
-
要使注入正常工作,您需要使用 @Stateless 之类的东西声明类,以便注入可以发生。您能提供整个课程以便我们查看吗?
-
问题不在于业务接口,因为我可以在其他地方使用它,并且确实使用Stateless注解进行了注解,并且它实现的接口使用Local进行了注解,但是当我使用时错误上升尝试在普通类中在托管 bean 之外使用它
-
NullPointerException抛出的究竟在哪里?是在你说的那一行,还是在堆栈的更深处? -
就在我说的那一行,我调试了它,结果 this.businessInterface 被评估为 null
-
POJO 中的注入只有在 POJO 是容器管理的情况下才有效!这意味着它必须是例如通过@Inject 实例化!使用 new() 的实例化不是容器管理的。
标签: java jsf jakarta-ee ejb pojo