我是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/