Предоставить доступ к контейнерам, управляемым EntityManger / EntityManagerFactory / PersistenceContext для JNDI - PullRequest
0 голосов
/ 16 января 2019

Как видно из заголовка, я хотел бы знать, можно ли искать управляемый контейнером 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.

1 Ответ

0 голосов
/ 16 января 2019

Я полагаю, что спецификация 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, вместо того, чтобы искать ресурс вручную

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...