首页 > 解决方案 > 将 CDI bean 注入 EJB (weblogic 10)

问题描述

NullPointerException在尝试将 CDI bean 注入 EJB 时遇到了问题。

我的ejb是

@Stateless(mappedName = "myEjb")
@TransactionManagement(TransactionManagementType.CONTAINER)
public class MyEjb implements MyEjbLocal, MyEjbRemote {
    private static final Logger logger = Logger.getLogger(MyEjb .class);

    @Inject
    @Named("myService")
    private MyService myService;

    public MyEjb () {

    }

    public MyEjb (MyService myService) {
        this.myService= myService;
    }

    @PostConstruct
    public void postConstruct() {
        logger.info("Injected myService" + myService+ " into this " + this);
    }

实际上myService总是为空。这是我myService使用 CDI 和工厂进行初始化的方法

@ApplicationScoped
public class ServiceFactory {
    private MyService myService;

    @Inject
    @Named("myDao")
    private MyDao dao;

    @PostConstruct
    public void afterCreate() {
        myService= new MyServiceImpl(dao);
    }

    @Produces
    @ApplicationScoped
    @Named("myService")
    public MyService myService() {
        return myService;
    }
}

而且MyService只是没有注释

public class MyServiceImpl implements MyService {


    private final MyDao myDao;

    public MyServiceImpl(MyDao dao) {
        this.myDao = dao;
    }

好吧,如果我调用 EJB,那么myService总是null......我错过了什么?(bean.xml有没有)

我是否错过了交互 ejb/cdi 周围的东西?

标签: javaweblogiccdiweblogic-10.xjava-ee-5

解决方案


推荐阅读