原文:http://blog.chinaunix.net/uid-21162795-id-3424973.html
<!-- 两个数据源的功用配置,方便下面直接引用 -->
<bean id="abstractXADataSource" class="com.atomikos.jdbc.AtomikosDataSourceBean" init-method="init"
destroy-method="close" abstract="true">
<property name="xaDataSourceClassName" value="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource"/>
<property name="poolSize" value="10" />
<property name="minPoolSize" value="10"/>
<property name="maxPoolSize" value="30"/>
<property name="borrowConnectionTimeout" value="60"/>
<property name="reapTimeout" value="20"/>
<!-- 最大空闲时间 -->
<property name="maxIdleTime" value="60"/>
<property name="maintenanceInterval" value="60 />
<property name="loginTimeout" value="60"/>
<property name="logWriter" value="60"/>
<property name="testQuery">
<value>select 1</value>
</property>
</bean>
<!-- 配置第一个数据源 -->
<bean id="dataSource" parent="abstractXADataSource">
<!-- value只要两个数据源不同就行,随便取名 -->
<property name="uniqueResourceName" value="mysql/sitestone" />
<property name="xaDataSourceClassName"
value="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource" />
<property name="xaProperties">
<props>
<prop key="URL">${jdbc.url}</prop>
<prop key="user">${jdbc.username}</prop>
<prop key="password">${jdbc.password}</prop>
</props>
</property>
</bean>
<!-- 配置第二个数据源-->
<bean id="dataSourceB" parent="abstractXADataSource">
<!-- value只要两个数据源不同就行,随便取名 -->
<property name="uniqueResourceName" value="mysql/sitesttwo" />
<property name="xaDataSourceClassName"
value="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource" />
<property name="xaProperties">
<props>
<prop key="URL">${jdbca.url}</prop>
<prop key="user">${jdbca.username}</prop>
<prop key="password">${jdbca.password}</prop>
</props>
</property>
</bean>
配置sessionfactory
<!-- 配置mybatis的SessionFactory -->
<bean id="sqlSessionFactoryB" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:configurationb.xml"/>
<property name="mapperLocations" value="classpath*:/com/suntel/linkup/model/mappert/*Mapper.xml"/>
<property name="dataSource" ref="dataSourceB" />
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:configuration.xml"/>
<property name="mapperLocations" value="classpath*:/com/suntel/linkup/model/mapper/*Mapper.xml"/>
<property name="dataSource" ref="dataSource" />
</bean>
为dao中选择相应的SqlSessionTemplate,给sqlsession注入相应的session工厂,这样dao和有相应的数据库可以连接了
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
<bean id="sqlSessionb" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactoryB" />
</bean>
事务
<bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager" init-method="init" destroy-method="close">
<property name="forceShutdown">
<value>true</value>
</property>
</bean>
<bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp">
<property name="transactionTimeout" value="30000" />
</bean>
<bean id="springTransactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManager">
<ref bean="atomikosTransactionManager" />
</property>
<property name="userTransaction">
<ref bean="atomikosUserTransaction" />
</property>
<!-- 必须设置,否则程序出现异常 JtaTransactionManager does not support custom isolation levels by default -->
<property name="allowCustomIsolationLevels" value="true"/>
</bean>
<!-- 配置事务管理 -->
<tx:annotation-driven transaction-manager="springTransactionManager" proxy-target-class="true" />
<!-- 支持 @AspectJ 标记-->
<aop:aspectj-autoproxy />
<!-- 以AspectJ方式 定义 AOP -->
<aop:config proxy-target-class="true">
<aop:advisor pointcut="execution(* com.chainup.operate.service..*.*(..))" advice-ref="txAdvice"/>
</aop:config>
<!-- 配置事务传播特性:如果存在一个事务,则支持当前事务。如果没有事务则开启:REQUIRED -->
<tx:advice id="txAdvice" transaction-manager="springTransactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="save*" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="insert*" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="create*" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="del*" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="update*" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="modify*" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="createOrder*" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="cancel*" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="pendingCancel*" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="trade*" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="*" read-only="true"/>
</tx:attributes>
</tx:advice>
原文:http://blog.chinaunix.net/uid-21162795-id-3424973.html
分享到:
相关推荐
本用例基于 Spring Boot + Druid + Mybatis 配置多数据源,并采用 JTA 实现分布式事务。
springboot+mybatis+druid+atomikos 多数据源,分布式事务,集成websocket,redis,swagger2
多数据源,实现分布式事务管理,基于Spring+SpringMVC+MyBatis+Atomikos框架
开发工具:MyEclipse10, 数据库:Mysql, demo中使用了2个数据源,2个不同的Mysql数据库。 注:不同数据库dataSource的配置是不一样的
Spring+Mybatis+Atomikos实现JAVA初始化并控制多个数据源+分布式事务的一个DEMO,内涵源代码,以及一篇关于该内容的博客
开发工具:MyEclipse10 数据库:DB2,Mysql demo中使用了2个数据源,1个DB2数据库,1个Mysql数据库。 注:不同数据库dataSource的配置是不一样的
Spring Boot:mybatis-plus + atomikos + druid 实现不同实例数据库的多数据源配置和分布式事务管理(demo项目),想到工作上可能会用到多数据源,但是自己在这方面并不是很熟悉,于是在网上查阅了很多文章,结果...
由于网上的多数据源事务的帖子大多是2010年以前的,现在spring都已经到4.X了,有些类已经弃用了。 原先很多都是用jotm实现的,但是由于spring的升级,totm的本地化实例那个类已经找不到了,所以我使用了atomikos。 ...
Spring多数据源分布式事务管理/springmvc+spring+atomikos[jta]+druid+mybatis
spring+mybatis+mysql+atomikos,实现一个简单的多数据源事物控制程序
springboot+Atomikos+jpa+mysql的JTA分布式事务实现,本案例涉及到2个数据库,预期结果,在同一个事务中,两个库的状态一致
spring+atomikos+mybatis 多数据源事务(动态切换)
JMay是什么JMay是一款基于Spring、SpringMVC、Mybatis、Atomikos集成框架,用于快速搭建跨数据库、分布式事务(XA规范)支持...4.多数据源支持,AOP动态数据源切换。基于Atomikos,分布式事务支持(需要数据库支持XA规范)
基于XA的非Maven 基于SpringMVC+Spring+MyBatis+Atomikos的分布式事务处理案例源码,亲自测试可以使用。能SSM多数据源环境和分布式环境下事务处理问题.
使用Atomikos支持分布式事务,Spring+Mybatis+Druid+AtomikosDataSource 使用手册: https://www.yuque.com/itman/wosfkn/mreame
:spring4+mybatis3的增删改查的例子:对mybaits的简单封装,方便简单的调用和多数据源的配置:使用atomikos来处理多数据源的一致性事务:封装对redis的增删改查以及对象的操作:利用spring封装了对redis集群的操作...
实现单表业务零SQL集成Atomikos支持分布式事务,以及支持多数据源配置统一异常处理统一响应结果封装基于JWT实现基于Token的鉴权机制使用Druid Spring Boot Starter集成Druid数据库连接池与监控使用AutoGenerator快速...
集成Mybatis Plus,实现单表业务零SQL(多数据源配置) 集成Atomikos支持分布式事务,以及支持多数据源配置(待集成) 集成Jetcache分布式缓存(最强大的缓存工具,没有一个) 完备的请求日志体系(按需打印,定位...
Atomikos(数据源事物) SpringCache(缓存集成redis) Shrio(权限控制,可以精确到按钮级别,集成redis) Redis(缓存服务器) Log4j Maven Generator(Mybatis自动生成工具) 前端技术点说明 Layer(弹出层) Font-awesome ...
分布式事务,多数据源事务全靠他.Cache:spring-cache. 统一接口,注解使用,simple,redis... 自动切换.Scheduler:quartz. 开源稳定,支持集群.自家:hsweb-commons :通用工具类hsweb-easy-orm :为动态表单设计的orm...