我是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;
    }

}


现在,我将此ListDao注入到部署在同一wildfly实例上的其他WAR中:

@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。
通过将空bean.xml放在WEB-INF文件夹下来启用CDI。

最佳答案

正如其中一条评论中提到的那样,您正在@Inject正在使用EntityManager,但是您没有提供任何证据表明您有该文件的生产者。 EntityManager没有默认的生产者方法

关于java - EJB-注入(inject)bean时出现NullpointerException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28537631/

10-10 04:18