我有一个完美工作的应用程序客户端,部署到GlassFish v2服务器中,并与某些EJB,实体等一起使用。我正在使用eclipselink。Java EE中的Persistence.createEntityManagerFactory()忽略JTA源
目前我有我的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]
即使在Map
“压倒一切” javax.persistence.jtaDataSource”到 “JDBC/MYSOURCE”并呼吁createEntityManagerFactory("mysource", map)
不会有所作为。
我缺少什么?
这应该工作,你的persistence.xml看起来是正确的。检查你的类路径中没有多个persistence.xml。 – James 2013-04-08 13:46:00