Java JPA persistence.xml,定义postgresql JTA数据源

Java JPA persistence.xml,定义postgresql JTA数据源,java,postgresql,jpa,datasource,jta,Java,Postgresql,Jpa,Datasource,Jta,我有一个Java应用程序,它使用JDBC连接到Postgres数据库,并使用JPA对其执行操作。我希望使用JTA事务类型,而不是本地事务类型。为此,我需要指定一个数据源 尽管阅读了,我仍然不知道在xml文件中实际放什么,因为我不知道如何检索数据源的名称,和/或在哪里以及如何定义它 当我使用RESOURCE-LOCAL事务类型时,与数据库的连接已经可以正常工作了。我浏览过的许多线程都提到在一个名为context.xml的文件中定义这一点。必须是这个文件吗?因为在创建JDBC数据库连接时没有自动生成

我有一个Java应用程序,它使用JDBC连接到Postgres数据库,并使用JPA对其执行操作。我希望使用JTA事务类型,而不是本地事务类型。为此,我需要指定一个数据源

尽管阅读了,我仍然不知道在xml文件中实际放什么,因为我不知道如何检索数据源的名称,和/或在哪里以及如何定义它

当我使用
RESOURCE-LOCAL
事务类型时,与数据库的连接已经可以正常工作了。我浏览过的许多线程都提到在一个名为
context.xml
的文件中定义这一点。必须是这个文件吗?因为在创建JDBC数据库连接时没有自动生成这样的文件,所以我需要手动创建它

简而言之,如果可以通过添加
某物
,请告诉我那东西是什么,或者我如何找到它。否则,请告诉我如何以及在哪里定义这些东西

<?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>

org.eclipse.persistence.jpa.PersistenceProvider
银行业,斯普拉特卡
VlastnikKonta银行
banking.FyzickaTransakce
银行业
银行业
银行业
银行业
银行,普拉巴
银行,Konto
BankovniPrevod银行
DB_控制。Transakceprevod
银行业
银行业
什么
在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"/>


我知道这是数据源的jndi名称。我的问题是,我不知道名字是什么,甚至我根本不知道我有没有名字。如何以及在何处定义一个数据源,该数据源将保存与上述内容相同的信息?如果您使用tomcat运行应用程序,那么您需要创建context.xml,在其中创建数据源,并且该数据源将取代某些内容。据我所知,我没有使用tomcat运行我的应用程序。这是一个连接到远程数据库的客户端应用程序。为了验证一下,我试着完全按照您所说的做,但得到了一个“无法获取数据源[jdbc/Datasource]”异常。我只给出了一个在tomcat上运行的应用程序的示例。您需要知道正确的数据源。
<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"/>