|
|
|
Создание entityManager в JTA-режиме
|
|||
|---|---|---|---|
|
#18+
Доброго всем! Пишу рест-сервис, который хостится на jboss (WildFly). То есть использую JTA-режим. На сервере прописаны 2 датасоурса к двум разным БД (postgres), которые мой сервис использует при работе. Либо в одну базу лезу, либо в другую, это должно определяться в рантайме, к примеру - параметром в запросе. Или конфигом на сервере, не важно, главное в рантайме. Теперь вопрос. Как правильно создать подключение (entityManager) из приложения? Вариант с аннотацией @PersistenceContext(unitName = "...", type = PersistenceContextType.EXTENDED) не нравится, т.к. unitName хардкодится, а я хочу имя соурса подставлять в рантайме. Либо надо иметь 2 разных entityManager в приложении, тоже некрасиво. Нашел в сети вариант http://stackoverflow.com/questions/5104185/how-to-inject-persistence-context-to-different-data-source-programmatically (второй ответ). Объявляю два persistence-unit с разными именами, потом в рантайме вызываю фабрику с именем нужного соурса: EntityManagerFactory emf = Persistence.createEntityManagerFactory(persistenceUnitName1); EntityManager em = emf.createEntityManager(); Это действительно работает. Однако на некоторых сайтах ( http://tomee.apache.org/jpa-concepts.html) вижу, что этого типа не может быть в режиме JTA: "You cannot use the EntityManagerFactory to get an EntityManager. You can only get an EntityManager supplied by the container." или это не правильно в принципе так делать и я поимею каких-то проблем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2017, 17:26 |
|
||
|
Создание entityManager в JTA-режиме
|
|||
|---|---|---|---|
|
#18+
Pavlo7, Может там просто инфа старая? http://docs.oracle.com/javaee/7/api/javax/persistence/EntityManagerFactory.html#createEntityManager-javax.persistence.SynchronizationType- Вот новый метод от версии 2.1 - создаёт EM в JTA транзакции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2017, 17:58 |
|
||
|
Создание entityManager в JTA-режиме
|
|||
|---|---|---|---|
|
#18+
Хм, ну возможно. Если создание EM через фабрику в JTA тоже легальный способ, то в чем отличие от создания через аннотацию @PersistenceContext ? И, что реально происходит при создании фабрики? (создается соединение или выделяется из пула WF или еще что?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 09:51 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39381741&tid=2123285]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
85ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 220ms |
| total: | 419ms |

| 0 / 0 |
