Имеет ли Джерси и EJB одну и ту же область EntityManager?
Должен ли я передать EntityManager в EJB для того же контекста постоянства?
Я не думаю, что ваша формулировка верна, но они могут использовать один и тот же экземпляр EntityManager, и вы выбрали правильный путь (путем внедрения). Взгляните на эту главу Руководства по Java EE 6:
Чтобы получить экземпляр EntityManager, введите менеджер сущностей в компонент приложения:
@PersistenceContext
EntityManager em;
Итак, еще раз, ваш подход правильный. Что касается вопросов в комментариях к коду: тот факт, что MyEntity
присоединен или отсоединен, зависит от реализации метода find в вашем EJB
. Если вы сделаете следующее, оно будет прикреплено:
public MyEntity find(Long id) {
return entityManager.find(MyEntity.class, id);
}
Наконец, если вы выбрали JTA
для использования транзакций, управляемых контейнером, транзакции будут автоматически ограничены естественными границами методов MyBean
. Чтобы иметь JTA-транзакции, вы должны использовать эту строку в файле persistence.xml
:
<persistence-unit name="em" transaction-type="JTA">