spring JTA多数据源事务管理详细教程
<context:annotation-config />
<!-- 使用注解的包路径 -->
<context:component-scan
base-package="com.rongli.service,com.rongli.dao,com.rongli.controller" />
<!-- 支持 @Transactional 标记 -->
<tx:annotation-driven transaction-manager="springJTATransactionManager"
proxy-target-class="true" />
<!-- 导入cxf配置文件 -->
<import resource="ws.cxf.xml" /> <!-- 加载properties配置文件 -->
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:jta.jdbc.properties</value>
</list>
</property>
</bean> <!--公有数据库连接池 -->
<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" />
<!--最大获取数据时间,如果不设置这个值,Atomikos使用默认的5分钟, 那么在处理大批量数据读取的时候,一旦超过5分钟,就会抛出类似 Resultset
is close 的错误. -->
<property name="reapTimeout" value="20000" />
<!-- 最大空闲时间 -->
<property name="maxIdleTime" value="60" />
<!--连接回收时间 -->
<property name="maintenanceInterval" value="60" />
<!--java数据库连接池,最大可等待获取datasouce的时间 -->
<property name="loginTimeout" value="60" />
<property name="testQuery">
<value>select 1</value>
</property>
</bean> <!-- 客户数据库 -->
<bean id="rlc_cus" parent="abstractXADataSource">
<property name="uniqueResourceName" value="mysql/rlc_cus" />
<property name="xaProperties">
<props>
<prop key="URL">${jdbc.rlc_cus.properties}</prop>
<prop key="user">${jdbc.rlc.user}</prop>
<prop key="password">${jdbc.rlc.password}</prop>
<prop key="pinGlobalTxToPhysicalConnection">true</prop>
</props>
</property>
</bean> <!-- 系统数据库 -->
<bean id="rlc_sys" parent="abstractXADataSource">
<property name="uniqueResourceName" value="mysql/rlc_sys" />
<property name="xaProperties">
<props>
<prop key="URL">${jdbc.rlc_sys.properties}</prop>
<prop key="user">${jdbc.rlc.user}</prop>
<prop key="password">${jdbc.rlc.password}</prop>
<prop key="pinGlobalTxToPhysicalConnection">true</prop>
</props>
</property>
</bean> <!-- 公有SessionFactory配置 -->
<bean id="baseSessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
abstract="true">
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.format_sql}</prop>
<prop key="hibernate.format_sql">${hibernate.show_sql}</prop>
<prop key="javax.persistence.validation.mode">none</prop>
</props>
</property>
<!-- 自动扫描注解方式配置的hibernate类文件 -->
<property name="packagesToScan" value="com.rongli.bean"></property>
</bean> <!-- sessionFactory配置 -->
<!-- customer sessionFactory -->
<bean id="cusSessionFactory" parent="baseSessionFactory">
<property name="dataSource" ref="rlc_cus" />
</bean>
<!-- system sessionFactory -->
<bean id="sysSessionFactory" parent="baseSessionFactory">
<property name="dataSource" ref="rlc_sys" />
</bean> <!-- atomikos事务管理器 -->
<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>2000</value>
</property>
</bean> <!-- spring 事务管理器 -->
<bean id="springJTATransactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManager">
<ref bean="atomikosTransactionManager" />
</property>
<property name="userTransaction">
<ref bean="atomikosUserTransaction" />
</property>
</bean> <!-- 用于测试,发布到服务器上时删除 -->
<bean id="systemServiceImpl" class="com.rongli.service.impl.SystemServiceImpl">
</bean>
spring JTA多数据源事务管理详细教程的更多相关文章
- spring+springmvc+mybatis+oracle+atomikos+jta实现多数据源事务管理
---恢复内容开始--- 在做项目过程中,遇到了需要一个项目中访问两个数据库的情况,发现使用常规的spring管理事务,导致事务不能正常回滚,因此,采用了jta+atomikos的分布式数据源方式 ...
- spring + ibatis 多数据源事务(分布式事务)管理配置方法(转)
spring + ibatis 多数据源事务(分布式事务)管理配置方法(转) .我先要给大家讲一个概念:spring 的多数据源事务,这是民间的说法.官方的说法是:spring 的分布式事务.明白了这 ...
- SpringBoot2 整合JTA组件,多数据源事务管理
本文源码:GitHub·点这里 || GitEE·点这里 一.JTA组件简介 1.JTA基本概念 JTA即Java-Transaction-API,JTA允许应用程序执行分布式事务处理,即在两个或多个 ...
- 全面分析 Spring 的编程式事务管理及声明式事务管理
开始之前 关于本教程 本教程将深入讲解 Spring 简单而强大的事务管理功能,包括编程式事务和声明式事务.通过对本教程的学习,您将能够理解 Spring 事务管理的本质,并灵活运用之. 先决条件 本 ...
- 全面分析 Spring 的编程式事务管理及声明式事务管理--转
开始之前 关于本教程 本教程将深入讲解 Spring 简单而强大的事务管理功能,包括编程式事务和声明式事务.通过对本教程的学习,您将能够理解 Spring 事务管理的本质,并灵活运用之. 先决条件 本 ...
- Spring基于AOP的事务管理
Spring基于AOP的事务管理 事务 事务是一系列动作,这一系列动作综合在一起组成一个完整的工作单元,如果有任何一个动作执行失败,那么事务 ...
- springbootdruidmybatismysql多数据源事务管理
springboot+druid+mybatis+mysql+多数据源事务管理 分布式事务在java中的解决方案就是JTA(即Java Transaction API):springboot官方提供了 ...
- Spring框架——JDBC与事务管理
JDBC JDBCTemplate简介 XML配置JDBCTemplate 简化JDBC模板查询 事务管理 事务简介 Spring中的事务管理器 Spring中的事务管理器的不同实现 用事务通知声明式 ...
- Spring企业级程序设计 • 【第4章 Spring持久化层和事务管理】
全部章节 >>>> 本章目录 4.1 配置数据源资源 4.1.1 JdbcTemplate介绍 4.1.2通过ComboPooledDataSource创建数据源 4.1. ...
随机推荐
- 学习笔记——Maven实战(九)打包的技巧
“打包“这个词听起来比较土,比较正式的说法应该是”构建项目软件包“,具体说就是将项目中的各种文件,比如源代码.编译生成的字节码.配置文件.文档,按照规范的格式生成归档,最常见的当然就是JAR包和WAR ...
- ViewController与outlet绑定
ViewController的作用 ViewController与XIB一一对应,用于分离独立出可重用组件单元,如单个组件.复合组件.界面片段.整个界面等. 通常继承 UIViewController ...
- java8特性深入解读文章合集
Java 8新特性列表 官方OpenJDK java8核心类库新特性列表 Lambda表达式 java8 lambda表达式被誉为java语言10年来最大的突破,给用户提供了scala和clojure ...
- 收藏所用C#技术类面试、笔试题汇总
技术类面试.笔试题汇总 注:标明*的问题属于选择性掌握的内容,能掌握更好,没掌握也没关系. 下面的参考解答只是帮助大家理解,不用背,面试题.笔试题千变万化,不要梦想着把题覆盖了,下面的题是供大家查漏补 ...
- 如何远程断点调试本地localhost项目
前言 对于一般开发网站的IDE自带的服务器是都跑在 localhost 地址上的.(如下图的asp.net) 而这种地址是只能在本机通过 localhost 或 127.0.0.1 地址访问到,而无法 ...
- AutoMapper用法(转载)
申明 本文转载自http://www.qeefee.com/article/automapper 作者:齐飞 配置AutoMapper映射规则 AutoMapper是基于约定的,因此在实用映射之前,我 ...
- Bootstrap3.0学习第二十四轮(JavaScript插件——按钮)
详情请查看 http://aehyok.com/Blog/Detail/30.html 个人网站地址:aehyok.com QQ 技术群号:206058845,验证码为:aehyok 本文文章链接:h ...
- javascript继承(一)—类的属性研究
本篇文章主要针对javascript的属性进行分析,由于javascript是一种基于对象的语言,本身没有类的概念,所以对于javascript的类的定义有很多名字,例于原型对象,构造函数等,它们都是 ...
- 第二十四课:jQuery.event.remove,dispatch的源码解读
本课还是来讲解一下jQuery是如何实现它的事件系统的.这一课我们先来讲一下jQuery.event.remove的源码解读. remove方法的目的是,根据用户传参,找到事件队列,从里面把匹配的ha ...
- IOS 遍历未知对象的属性和方法
/* 注意:要先导入ObjectC运行时头文件,以便调用runtime中的方法*/ #import <objc/runtime.h> @implementation NSObject (P ...