2016-05-23 4 views
0

У меня есть приложение Java, которое использует JDBC для подключения к базе данных Postgres и JPA для выполнения операций над ней. Я хочу использовать тип транзакции JTA, а не локальный. Для этого мне нужно указать источник данных.JPA persistence.xml, определяющий источник данных postgresql JTA

Несмотря на чтение this thread, я до сих пор не знаю, что на самом деле положить в xml-файл, так как я понятия не имею, как получить имя моего источника данных и/или где и как его определить.

Подключение к базе данных уже работает без проблем, когда я использую тип транзакции 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> 

ответ

1
<jta-data-source>something</jta-data-source> 

что-то будет JNDI имя вашего источника данных в J2EE enviornment.

Когда вы имеете в виду какой-либо источник данных, вам не нужно помещать ниже детали в 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"/> 
+0

Мне известно о том, что это имя jndi источника данных. Моя проблема в том, что я не знаю, что это за имя, или даже если у меня его есть. Как и где я могу определить источник данных, который будет содержать информацию, эквивалентную приведенному выше? – user129186

+0

Если вы используете tomcat для запуска вашего приложения, вам необходимо создать context.xml, где вы создадите источник данных, и этот источник данных будет здесь вместо чего-то. –

+0

<имя ресурса AUTH = тип = "JDBC/Datasource" "Контейнер" = "javax.sql.DataSource" driverClassName = "org.postgresql.Driver" URL = "JDBC: PostgreSQL: // XXXXXXXXXX" имя пользователя =» xxxxxxxxxxx "password =" xxxx "maxActive =" 20 "maxIdle =" 10 "maxWait =" 1000 " validationQuery =" select 1 from dual "testOnBorrow =" true "debugUnreturnedConnectionStackTraces =" true " validationInterval =" 34000 "/> –