我有接口,定义为
@Local
public interface MyPersistenceManagerLocal {
public List<PropertyList> getPropertyList(int id);
}
上面接口的和实现类是
@Stateless
public class MyPersistenceManagerBean implements MyPersistenceManagerLocal {
@PersistenceContext(unitName = PersistentSettings.PERSIST_NAME)
private EntityManager entityManager;
@Override
public List<PropertyList> getPropertyList(int id) {
System.out.println("inside MyPersistenceManagerBean.getPropertyList()");
......
......
......
}
}
我可以在另一个电话中呼叫
@Stateless
public class ClientImpl implements Client {
@EJB
MyPersistenceManagerLocal persistenceManager;
final List<PropertyList> dbList = persistenceManager.getPropertyList(id);
}
我在
上得到NullPointerExceptionfinal List<PropertyList> dbList = persistenceManager.getPropertyList(id);
在调试模式下,我得到了persistenceManager为空。
我是EJB和JPA的新手,无法解决这个问题。任何帮助我为什么我将persistenceManager作为null
答案 0 :(得分:3)
您正在获取NPE,因为容器尚未注入所需的bean。 你需要在@PostConstruct方法中设置它,即
@Stateless public class ClientImpl implements Client {
@EJB MyPersistenceManagerLocal persistenceManager;
private List dbList;
@PostConstruct
public void init(){
dblist = persistenceManager.getDbList();
}
}