У меня есть приложение 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>
Мне известно о том, что это имя jndi источника данных. Моя проблема в том, что я не знаю, что это за имя, или даже если у меня его есть. Как и где я могу определить источник данных, который будет содержать информацию, эквивалентную приведенному выше? – user129186
Если вы используете tomcat для запуска вашего приложения, вам необходимо создать context.xml, где вы создадите источник данных, и этот источник данных будет здесь вместо чего-то. –
<имя ресурса 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 "/> –