我有一个Java应用程序,它使用JDBC连接到Postgres数据库,JPA对它执行操作。我希望使用JTA事务类型,而不是本地事务类型。为此,我需要指定一个数据源。
尽管阅读this thread,我仍然不知道实际放入xml文件的内容,因为我不知道如何检索我的数据源的名称,和/或在何处以及如何定义它。 / p>
当我使用RESOURCE-LOCAL
事务类型时,与数据库的连接已经正常运行。我浏览过的很多线程都提到在名为context.xml
的文件中定义它。它必须是这个文件吗?由于在创建JDBC数据库连接时没有为我自动生成这样的文件,我需要手动创建它。
简而言之,如果可以通过添加
来获得以下文件
<jta-data-source>something</jta-data-source>
,请告诉我这是什么,或者我怎么知道。否则,请告诉我如何以及在何处定义该内容。
<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.1"
xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="BankingPU" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<class>banking.Splatka</class>
<class>banking.VlastnikKonta</class>
<class>banking.FyzickaTransakce</class>
<class>banking.Klient</class>
<class>banking.PlatebniKarta</class>
<class>banking.Transakce</class>
<class>banking.Uver</class>
<class>banking.Platba</class>
<class>banking.Konto</class>
<class>banking.BankovniPrevod</class>
<class>DB_control.Transakceprevod</class>
<class>banking.Transakceprevod</class>
<class>banking.TransakcePrevod</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:postgresql://xxxxxxxxxx"/>
<property name="javax.persistence.jdbc.password" value="xxxx"/>
<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>
<property name="javax.persistence.jdbc.user" value="xxxxxxxxxxx"/>
<property name="javax.persistence.schema-generation.database.action" value="create"/>
</properties> </persistence-unit> </persistence>
答案 0 :(得分:1)
<jta-data-source>something</jta-data-source>
某些东西将是J2EE环境中数据源的jndi名称。
当您引用任何数据源时,您不需要将以下部分放在persistence.xml中。
<property name="javax.persistence.jdbc.url" value="jdbc:postgresql://xxxxxxxxxx"/>
<property name="javax.persistence.jdbc.password" value="xxxx"/>
<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>
<property name="javax.persistence.jdbc.user" value="xxxxxxxxxxx"/>