java - 抽象类上的 EJB 注入(inject)

标签 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 上分解了一些代码,这些代码继承了多个类,另一个子类实现了抽象代码。

当我在 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/

相关文章:

java - 安卓运行时 : FATAL EXCEPTION: main : application has stopped error

java - 每次运行我的程序时创建一个新的日志文件

java - 请求可以直接到达 ejb 容器还是应该首先到达 Web 容器。有人可以解释一下吗?

performance - 快速的,抽象类或接口(interface)是哪一个?

c++ - 抽象类和模板

C# 抽象类,使用匿名而不是声明具体类?

executeQuery() 中的 Java MYSQL 异常

java - 使用 apache commons-net FTPClient 传输原始二进制文件?

junit - 使用 TomEE 嵌入式 EJBContainer api : java. lang.ClassFormatError 异常进行 EJB 测试

java - 有没有办法使用调用远程 EJB 的嵌入式容器创建 Spring Boot 应用程序?