Мой постоянный менеджер недействителен - PullRequest
2 голосов
/ 22 января 2011

У меня есть интерфейс, который определен как

@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 как ноль

1 Ответ

3 голосов
/ 22 января 2011

Вы получаете NPE, потому что контейнер еще не ввел требуемый компонент. Вам необходимо установить его в методе @PostConstruct, т.е.

@Stateless public class ClientImpl implements Client {

   @EJB MyPersistenceManagerLocal persistenceManager;

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

}

...