我的persistenceManager为null

时间:2011-01-22 13:30:00

标签: java jpa ejb persistent

我有接口,定义为

@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

1 个答案:

答案 0 :(得分:3)

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

@Stateless public class ClientImpl implements Client {

   @EJB MyPersistenceManagerLocal persistenceManager;

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

}