开发传统应用遇到的最大问题就是多数据源的事务一致性问题, 下面介绍一种常用的分布式事务处理方式的使用
开发环境:Eclipse+Java1.7 + Tomcat7, 另外使用到的开源框架 Spring3.X
提到分布式事务大家首先想到的肯定是jta,我们用到的就是基于jta的一种实现atomikos,下面就介绍一下他的使用
1、依赖的jar
Maven依赖代码
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ?com.atomikos
? ?transactions-jta
? ?${atomikos.version}
? ?true
?
?
? ?com.atomikos
? ?transactions-jdbc
? ?${atomikos.version}
? ?true
?
?
? ?javax.transaction
? ?jta
? ?${jta.version}
? ?true
?
?
? ?com.alibaba
? ?druid
? ?1.0.9
?
2、 配置数据源
数据源连接池,必须是支持XA标准的连接池,什么是XA标准呢?
Java代码
? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ?
?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
? ?
?
3、强数据源指定到AtomikosDataSourceBean中,再有该类的对象向DAO层提供数据源服务
配置如下
datasource1
?
? ? ?
? ? ? ?
? ? ?
? ? ?
? ? ? ? ? ?
? ? ? ? ? ? ? test?
? ? ? ? ? ? ? ? ? ? ? ? ? test?
? ? ? ? ? ? ? ? ? ? ? ? ? test?
? ? ? ? ? ? ? test?
? ? ? ? ? ? ? test?
? ? ?
? ? ?
?
dataSource2
?
? ? ?
? ? ? ?
? ? ?
? ? ?
? ? ? ? ? ?
? ? ? ? ? ? ? test?
? ? ? ? ? ? ? ? ? ? ? ? ? test?
? ? ? ? ? ? ? ? ? ? ? ? ? test?
? ? ? ? ? ? ? test?
? ? ? ? ? ? ? test?
? ? ?
? ? ?
?
3、将数据源托管到TranscationManager
? ? ? ? init-method="init" destroy-method="close">
? ? ? ? UserTransactionManager
? ? ? ?
? ? ? ? ? ? true
? ? ? ?
? ? ? ? JtaTransactionManager
? ? ? ?
? ? ? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ? ? ?
? ? ? ?
? ? ? ?
4、定义切面
?
?
?
?
?
?
?
?
?
?
?
?
5、 jta.properties (路径跟log4j.properties一致就好)
这个文件不配置系统也能启动,因为有默认配置,个人建议配置一下。详细配置
com.atomikos.icatch.console_file_name = xam.out
com.atomikos.icatch.log_base_name = xamlog.log
com.atomikos.icatch.service = com.atomikos.icatch.standalone.UserTransactionServiceFactory