我的 persistenceManager 为空
Posted
技术标签:
【中文标题】我的 persistenceManager 为空【英文标题】:My persistenceManager is null 【发布时间】:2011-01-22 13:29:59 【问题描述】:我有定义为
的接口@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
【问题讨论】:
【参考方案1】:您正在获得 NPE,因为容器尚未注入所需的 bean。 您需要在 @PostConstruct 方法中设置它,即
@Stateless public class ClientImpl implements Client
@EJB MyPersistenceManagerLocal persistenceManager;
private List dbList;
@PostConstruct
public void init()
dblist = persistenceManager.getDbList();
【讨论】:
感谢 Marcin,我已经编写了最终列表 dbList = persistenceManager.getPropertyList(id);在我在课堂上的一个方法中,所以我不能将它保留在 init() 中,并且这个方法是从其他方法调用的还有什么我应该尝试的吗? 然后根据答案更改它..?删除final
并添加一个 @PostConstruct
方法,您可以在其中初始化列表。
我也试过了,但它不起作用(我的意思是在我的方法定义中添加了@PostConstruct)
remamber 如果您使用 @PostConstruct 注释来注释方法,则此方法需要具有以下签名 以上是关于我的 persistenceManager 为空的主要内容,如果未能解决你的问题,请参考以下文章