我有以下对象结构:
public abstract class RGBusinessLogic {
@EJB
protected RGBeanLocal rgb;
public abstract String foo(String x, String y);
public void bar(){
...some code...
rgb.anyFunction(... some params...);
...some code...
foo(someStringX,someStringY);
... some code...
}
public String bazz(){
... some code...
}
}
@Stateless
public class RGEnqueuerResource extends RGBusinessLogic {
@Override
public String foo(String a,String b){
...some code...
wa = rbg.anyOtherFunction(...some params...);
...some code...
}
}
/** that is a Rest Services **/
@Path("somePath")
@RequestScoped
public class RGEnqueuerResourceRest extends RGEnqueuerResource{
@POST
@Path("fooRest")
public String foo(
@FormParam("paramA") String a,
@FormParam("paramB") String b){
return super.foo(x,y);
}
@POST
@Path("bazzRest")
public String bazz(){
return super.bazz();
}
}
主要思想是以下设计:我在 RGBusinessLogic 上分解了一些代码,这些代码继承了多个类,另一个子类实现了抽象代码。
当我在 RGEnqueuerResourceRest.foo
上收到 POST 请求时,我在该行收到 NullPointerException
wa = rbg.anyOtherFunction(...some params...);
看起来 rgb
EJB 未正确注入(inject)。我想知道您是否可以了解这里发生了什么?
最佳答案
我猜您正在使用 Java EE 6... RGEnqueuerResourceRest 不是 session bean,因此不会注入(inject) RGBeanLocal EJB。最简单的解决方案是使用 @Stateless 注释 RGEnqueuerResourceRest,以便 bean 将由容器管理并且 EJB 注入(inject)将起作用。
关于java - 抽象类上的 EJB 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20271849/