我是JTA的新手,我正在尝试实现JTA 2 pc。在业务方法
我想如果fun1失败那么fun3也应该但它没有发生。
@Transactional
fun(){
testDao1.fun1();
testDao2.fun3();
}
我有以下事情。
创建数据源为.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>
具有JTA类型的持久性单元
使用上面的dataSource和Persistence单元创建了entityAMangerFactory 4.从服务器获取javax.transaction.TransactionManager和Usertransaction对象,并为注释配置spring jta
有一个注释为事务性的业务类。
答案 0 :(得分:0)
确保每个参与两阶段提交的数据库都有XA类型的驱动程序;否则,它将无法工作。
你是如何测试的?你有一个抛出异常的模拟版DAO1吗?