У меня есть несколько баз данных с той же структурой, что и на разных серверах (одна база данных для каждого из моих клиентов), моему приложению необходимо подключиться к все они динамически с использованием JTA. Поэтому, когда клиент X выполняет некоторую операцию с базой данных, приложение должно решить во время выполнения, в какой базе данных он подключается, и эта операция будет выполняться только на этой конкретной базе данных. И есть еще одна проблема, мне придется создать один пул соединений для каждый из моих клиентов, если один из них не сможет подключиться, стеклянная рыба даже не начнет.Один динамический EntityManager, подключающийся к нескольким базам данных, являющийся транзакционным типом = «JTA»
Я посмотрел и всюду, и я не нашел хорошего решения. Может ли кто-нибудь мне помочь? Я использую EJB 3 и JPA2 с EclipseLink.
Он может работать, если я изменяю значение unitName в аннотации PersistenceContext во время выполнения, знает ли кто-нибудь, возможно ли это сделать?
Вам нужно еще раз оттолкнуть то, что вы хотите от своего приложения. Аналогичная структура базы данных, означает ли это, что вы будете использовать ту же модель сущности Java? Когда вы пытаетесь найти сущность, в какую базу (ы) будет входить JPA? Как вы ожидаете, какие базы данных будут записаны? Самое простое решение - создать несколько единиц персистентности, каждый из которых имеет свой собственный источник данных в своей собственной базе данных. Затем вы связываете источники данных xa с JTA на вашем сервере. – Chris
Вопрос переписан. @Chris – lucianovcnt
Я не уверен, почему Glassfish не начнется, если ваш источник данных не сможет подключиться. Существует много способов создания источника данных в стеклянной платке, и я предполагаю, что Glassfish можно запустить независимо от его источников данных. Вы имеете в виду приложение, не работающее, когда источник данных недоступен при использовании контейнера с сохранением контейнера? – Chris