EJB - 注入bean时出现NullpointerException

时间:2015-02-16 08:53:28

标签: java java-ee ejb cdi wildfly

我是EJB和CDI的新手。 请帮助我理解我在这里做错了什么:

我的代码如下所示,并部署在JBoss WildFly 8上的WAR中:

@Stateless(name = "application.listDao")
public class ListDao extends BaseDao {

    @Inject
    private SomeOtherDao someOtherDao;

    // some other methods

}

@Stateless
public abstract class BaseDao {

    @Inject
    protected EntityManager entityManager;

    public List find( long id ) {

        List list = new ArrayList<>();

        // JPA stuff to perform operations

        return list;
    }

}

现在,我在部署在同一个wildfly实例上的其他WAR中注入了这个ListDao:

@RequestScoped
public class ListReport {

    @Inject
    private ListDao listDao;

    public List getReport(long id) {

        // Here I am getting NullPointerException
        List reportList = listDao.find(id);

        return reportList;
    }

}

我将listDao视为null,因此获得NullPointerException。 通过在WEB-INF文件夹下放置空beans.xml来启用CDI。

2 个答案:

答案 0 :(得分:2)

正如其中一条评论所述,您@Inject EntityManager EntityManager,但您还没有提供任何证据证明您有生产者。 {{1}}

没有默认的生产者方法

答案 1 :(得分:0)

如果其他战争不在同一个EAR(企业档案)中,则无法进行此操作。这是两个完全独立的部署。由于类加载器隔离,这两个部署甚至无法看到彼此的类。 在这种情况下,您需要将两场战争打包成一只耳朵。