我的接口(interface)定义为
@Local
public interface MyPersistenceManagerLocal {
public List<PropertyList> getPropertyList(int id);
}
上述接口(interface)的实现类是
@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);
}
我收到 NullPointerException
final List<PropertyList> dbList = persistenceManager.getPropertyList(id);
在 Debug模式下,我发现 persistenceManager 为空。
我是 EJB 和 JPA 的新手,无法解决这个问题。任何帮助为什么我将 persistenceManager 设为 null
最佳答案
您收到 NPE,因为容器尚未注入(inject)所需的 bean。 您需要在 @PostConstruct 方法中设置它,即
@Stateless public class ClientImpl implements Client {
@EJB MyPersistenceManagerLocal persistenceManager;
private List dbList;
@PostConstruct
public void init(){
dblist = persistenceManager.getDbList();
}
}
关于java - 我的 persistenceManager 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4768078/