抽象类上的EJB注入

时间:2013-11-28 17:29:53

标签: java ejb abstract-class

我有以下对象结构:

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上分解了一些代码,它继承了多个类,另一个子类实现了abtract代码。

当我在RGEnqueuerResourceRest.foo收到POST请求时,我会在NullPointerException处获得

wa = rbg.anyOtherFunction(...some params...);

看起来rgb未正确注入EJB。我想知道你能否知道这里发生了什么?

1 个答案:

答案 0 :(得分:1)

我猜你使用的是Java EE 6 ... RGEnqueuerResourceRest不是会话bean,因此不会注入您的RGBeanLocal EJB。最简单的解决方案是使用@Stateless注释RGEnqueuerResourceRest,这样bean将由容器管理,EJB注入将起作用。