2

私は次のように定義されているインターフェイスを持っています

@Local
public interface MyPersistenceManagerLocal {

  public List<PropertyList> getPropertyList(int id);

}

上記のインターフェースのimplentaionクラスは

@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がnullになりました。

私はEJBとJPAの初心者であり、これを解決することはできません。私がpersistenceManagerをnullとして取得している理由

4

1 に答える 1

3

コンテナーが必要な Bean をまだ注入していないため、NPE を取得しています。@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 に答える