Я работаю с EJB ... Я делаю следующее, и я не знаю, почему введенный EntityManager не работает так, как можно было бы ожидать.Проблема с помощниками EJB + POJO + EntitiyManager
- EJB1 вызывает метод на EJB2, который записывает в БД.
- , когда EJB2 возвращает EJB1, отправляет сообщение в MDB.
- MDB вызывает EJB3, который считывает БД и выполняет некоторую работу.
Моя проблема заключается в том, что EntityManager, введенный во все 3 EJB с @PersistenceContext, работает неправильно. Вызов persist() в EJB2 не отражается на EntityManager, введенном в EJB3. Что может быть неправильно? Надеюсь, я сделал свою проблему достаточно ясной. теперь работает с транзакциями, управляемыми контейнером.
Это JPA право? Я не слишком хорошо знаком с JPA, но я подозреваю, что каждый EJB получает другой экземпляр EntityManager. Когда вы вызываете persist, уверены ли вы, что он не кэширует объект и что он зафиксирован в базе данных? Даже если объект зафиксирован в базе данных, он может не отображаться в другом экземпляре EntityManager, если вы не очистите его кеш и не перезагрузите все сущности. – jthg
есть, используя JPA. Не должно быть новых экземпляров EntityManager. Впрыск с использованием @PersistenceContext повторно использует тот же EntityManager isntance, которым жизненный цикл управляется контейнером. Ну, я верю в то, что происходит, я не уверен на 100%. – nico
Не имеет ли каждый EJB свой файл persistence.xml? Если это так, не означает ли это, что у каждого EJB _has_ есть свой экземпляр EntityManager? – jthg