【问题标题】:How to configure JTA transaction with JNDI如何使用 JNDI 配置 JTA 事务
【发布时间】:2020-11-23 16:37:39
【问题描述】:

我在 server.xml 中定义了两个数据源,我想将它们与 jta 事务管理器一起使用。但是如何关联 jndi 和事务管理器?

这里是 server.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 with JNDI and JPA transaction manager

【问题讨论】:

  • 我可以用 AtomikosDataSourceBean 配置数据源类型吗?

标签: spring transactions jndi jta


【解决方案1】:

终于

  1. 使用 xadatasource 配置数据源
  2. 用户 WebSphereUowTransactionManager
<bean id="transactionManager" class="org.springframework.transaction.jta.WebSphereUowTransactionManager">
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-27
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多