2013-11-28 4 views
0

я иметь следующую структуру объекта:EJB Inyection на абстрактном классе

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 код.

Когда я получаю запрос POST на RGEnqueuerResourceRest.foo, я получаю NullPointerException на линии

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

Похоже rgb EJB не впрыскивается правильно. Я хотел бы узнать, можете ли вы узнать, что здесь происходит?

ответ

1

Я предполагаю, что вы используете Java EE 6 ... RGEnqueuerResourceRest не является сессионным компонентом, поэтому ваш RGBeanLocal EJB не вводится. Самое простое решение - аннотировать RGEnqueuerResourceRest с @Stateless, поэтому bean будет управляться контейнером, и EJB-инъекция будет работать.

Смежные вопросы