Как говорится в названии, я хотел бы знать, можно ли найти управляемый контейнером EntityManger (или EntityManagerFactory или PersistenceContext) через JNDI в корпоративном приложении, развернутом на Websphere Application Server ver. 8.5 или 9.0 без явных ссылок через <persistence-context-ref> / <persistence-unit-ref> в web.xml.
Я обнаружил, что это возможно в JBoss через
<property name = "jboss.entity.manager.factory.jndi.name" value = "persistence-units/JpaPersistence"/>
запись в persistence.xml, но ничего подобного для Websphere найти не удалось.





Я считаю, что спецификация JPA, раздел 7.2.1, содержит информацию, которую вы ищете:
Пример внедрения контекста постоянства:
@PersistenceContext(name = "persistence-units/JpaPersistence")
EntityManager em;
Пример поиска JNDI:
@Stateless
@PersistenceContext(name = "persistence-units/JpaPersistence")
public class MySessionBean implements MyInterface {
@Resource SessionContext ctx;
public void doSomething() {
EntityManager em = (EntityManager)ctx.lookup("persistence-units/JpaPersistence");
...
}
}
Я бы рекомендовал, чтобы контейнер просто вводил ссылку с помощью @PersistenceContext вместо того, чтобы искать ресурс вручную.