Как настроить JTA-транзакцию с JNDI - PullRequest
0 голосов
/ 03 августа 2020

Я определил два источника данных на сервере. xml и хотел бы использовать их с менеджером транзакций jta. Но как выпустить jndi и менеджер транзакций?

вот сервер. xml

<dataSource jndiName="jdbc/db1" id="jdbc/db1" auth="Container"  type="javax.sql.XADataSource">
    <jdbcDriver libraryRef="DBLIB" javax.sql.XADataSource="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource" />
    <properties databaseName="" URL="jdbc:mysql://ip:port/DB?useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false" user="user" password="pwd" />
    <connectionManager id="jdbc/sqlPool" maxPoolSize="30" minPoolSize="20" connectionTimeout="180" reapTime="180" unusedTimeout="1800" agedTimeout="0" />
 </dataSource>

<dataSource jndiName="jdbc/db2" id="jdbc/db2" auth="Container"  type="javax.sql.XADataSource">
    <jdbcDriver libraryRef="DBLIB" javax.sql.XADataSource="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource" />
    <properties databaseName="" URL="jdbc:mysql://ip:port/DB?useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false" user="user" password="pwd" />
    <connectionManager id="jdbc/sqlPool" maxPoolSize="30" minPoolSize="20" connectionTimeout="180" reapTime="180" unusedTimeout="1800" agedTimeout="0" />
</dataSource>

здесь applicationContext. xml

<!--jta-->
<bean id="jtaTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager" init-method="init" destroy-method="close" >
  <property name="forceShutdown" value="true"/>
</bean>
<bean id="userTransaction" class="com.atomikos.icatch.jta.J2eeUserTransaction">
  <property name="transactionTimeout" value="300"/>
</bean>

<bean id="transactionManager" class="org.springframework.transaction.jta.WebSphereUowTransactionManager">
  <property name="userTransaction" ref="userTransaction"/>
  <property name="transactionManager" ref="jtaTransactionManager"/>
  <property name="allowCustomIsolationLevels" value="true"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />

<jee:jndi-lookup id="datasource1" jndi-name="jdbc/db1"></jee:jndi-lookup>

<jee:jndi-lookup id="datasource2" jndi-name="jdbc/db2"></jee:jndi-lookup>

этот вопрос выглядит так же, как и мой, но transactionManager не позволяет свойство dataSource Spring Transaction с JNDI и JPA менеджер транзакций

1 Ответ

0 голосов
/ 05 августа 2020

Наконец

  1. сконфигурируйте источник данных с xadatasource
  2. пользователь WebSphereUowTransactionManager
<bean id="transactionManager" class="org.springframework.transaction.jta.WebSphereUowTransactionManager">
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
...