2

我有定义为的接口

@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);

}

我得到 NullPointerException

final List<PropertyList> dbList = persistenceManager.getPropertyList(id);

在调试模式下,我得到 persistenceManager 为空。

我是 EJB 和 JPA 的新手,无法解决这个问题。任何帮助为什么我将 persistenceManager 设为 null

4

1 回答 1

3

您正在获得 NPE,因为容器尚未注入所需的 bean。您需要在@PostConstruct 方法中设置它,即

@Stateless public class ClientImpl implements Client {

   @EJB MyPersistenceManagerLocal persistenceManager;

   private List dbList;
   @PostConstruct
   public void init(){
        dblist = persistenceManager.getDbList();
   }

}

于 2011-01-22T13:35:29.193 回答