Как получить диспетчер управляемого объекта контейнера в JavaEE 6 без использования аннотаций
Как получить диспетчер управляемого объекта контейнера в JavaEE 6 без использования аннотаций
2 ответа
Вы можете попытаться получить менеджер сущностей, используя JNDI, как описано здесь: http://docs.oracle.com/cd/E16439_01/doc.1013/e13981/usclient005.htm
Дополнительно взгляните на раздел 7.2 ("Получение EntityManager") спецификации JPA.
Я нашел это решение, которое работает на Glassfish 3.1 (спасибо Томасу за ссылки):
@Stateless
@PersistenceContext(unitName = "myUnit", name="persistence/myUnit")
public class MyLibraryService {
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public String getFirstName(String userId) {
EntityManager em = (EntityManager) new InitialContext().lookup("java:comp/env/persistence/myUnit");
TypedQuery<String> tq = em.createQuery("select fn from Person p where p.id = :userId", String.class);
tq.setParameter("userId", userId);
...
}
}
где myUnit
имя подразделения, определенное в persistence.xml
,
MyLibraryService
может быть просто введен в другие классы:
@Inject
private MyLibraryService myLibraryService;