JTA 2PC - 具有多个数据源

时间:2011-09-06 16:55:38

标签: spring jpa jta

我是JTA的新手,我正在尝试实现JTA 2 pc。在业务方法

我想如果fun1失败那么fun3也应该但它没有发生。

@Transactional
fun(){

testDao1.fun1();
testDao2.fun3();
}

我有以下事情。

  1. 创建数据源为.I有多个数据源

    <bean id="dataSource" class="org.apache.commons.dbcp.managed.BasicManagedDataSource"
        destroy-method="close">
        <property name="driverClassName" value="org.postgresql.xa.PGXADataSource" />
        <property name="url" value="${database.interimws.email.url}" />
        <property name="username" value="${database.interimws.email.username}" />
        <property name="password" value="${database.interimws.email.password}" />
         <property name="defaultAutoCommit" value="false" />        
        <property name="maxActive" value="${database.maxactive}" />
        <property name="maxIdle" value="${database.maxidle}" />
        <property name="maxWait" value="${database.maxwait}" />
    </bean> 
    
  2. 具有JTA类型的持久性单元

  3. 使用上面的dataSource和Persistence单元创建了entityAMangerFactory 4.从服务器获取javax.transaction.TransactionManager和Usertransaction对象,并为注释配置spring jta

  4. 有一个注释为事务性的业务类。

1 个答案:

答案 0 :(得分:0)

确保每个参与两阶段提交的数据库都有XA类型的驱动程序;否则,它将无法工作。

你是如何测试的?你有一个抛出异常的模拟版DAO1吗?