У меня есть прекрасно работающий клиент приложения, развернутый на сервере GlassFish v2 внутри уха с некоторыми EJB, сущностями и т. д. Я использую eclipselink.
В настоящее время у меня есть файл persistence.xml:
<persistence-unit name="mysource">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>jdbc/mysource</jta-data-source>
<class>entities.one</class>
<class>entities.two</class>
...
<properties>
<property name="eclipselink.target-server" value="SunAS9"/>
<property name="eclipselink.logging.level" value="FINE"/>
</properties>
</persistence-unit>
И это прекрасно работает, когда я ввожу EntityManager
в EJB:
@PersistenceContext(unitName="mysource")
private EntityManager em;
Теперь у меня есть требование динамически переключать единицы хранения/базы данных. Я полагаю, что могу получить EntityManager
программно:
em = Persistence.createEntityManagerFactory("mysource").createEntityManager();
но я получаю следующую ошибку:
Unable to acquire a connection from driver [null], user [null] and URL [null]
Даже «переопределение» javax.persistence.jtaDataSource на «jdbc/mysource» в Map
и вызов createEntityManagerFactory("mysource", map)
не имеет значения.
Что мне не хватает?