- 浏览: 552443 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
bo_hai:
快速排序:https://bo-hai.iteye.com/b ...
插入排序、选择排序、冒泡排序 简单实例 -
bo_hai:
参考:https://bo-hai.iteye.com/blo ...
插入排序、选择排序、冒泡排序 简单实例 -
bo_hai:
JDK1.8后,解决问题的办法就简单啦:List<Int ...
List 中去除 null 方法讨论 -
bo_hai:
上述两种办法都不是最好的单例模式。
安全发布单例模式 -
bo_hai:
我来评论一下。
MySql 删除重复数据的方法
1、我先要给大家讲一个概念:spring 的多数据源事务,这是民间的说法。官方的说法是:spring 的分布式事务。明白了这个概念,问题就好解决了。
2、分布式事务的应用场景:工程中使用两个及以上数据库中,就要考虑使用分布式事务管理,否则事务不能回滚。
3、现有两种开源的第三方jar支持spring的分布式事务管理,它们分别是:jotm和Atomikos。通过google可以找到下载的链接,其中atomikos的下载需要先填写email信息,再登录email找到链接去下载。下载地址分别:
2、http://www.atomikos.com/Main/InstallingTransactionsEssentials
我使用的是jotm。
4、基于spring+ibatis的环境下配置jotm的方法很简单。只城要修改spring数据源的配置及事务的配置及可。以下是我的配置,供参考。
<bean id="jotm" class="org.springframework.transaction.jta.JotmFactoryBean"> <property name="defaultTimeout" value="500000"/> </bean> <bean id="dataSource" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown"> <property name="dataSource"> <bean class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown"> <property name="transactionManager" ref="jotm"/> <property name="driverName" value="${driverClass}"/> <property name="url" value="${jdbcUrl}"/> </bean> </property> <property name="user" value="${user}"/> <property name="password" value="${password}"/> </bean> <bean id="dataSourceBbs" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown"> <property name="dataSource"> <bean class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown"> <property name="transactionManager" ref="jotm"/> <property name="driverName" value="${bbs.driverClass}"/> <property name="url" value="${bbs.jdbcUrl}"/> </bean> </property> <property name="user" value="${bbs.user}"/> <property name="password" value="${bbs.password}"/> </bean> <!-- JTA事务管理器 --> <bean id="myJtaManager" class="org.springframework.transaction.jta.JtaTransactionManager"> <property name="userTransaction" ref="jotm" /> </bean> <!-- 事务切面配置 --> <aop:config> <aop:pointcut id="serviceOperation" expression="execution(* com.bohai.service.impl.*.*(..))"/> <aop:advisor pointcut-ref="serviceOperation" advice-ref="txAdvice" order="0" /> </aop:config> <!-- 通知配置 --> <tx:advice id="txAdvice" transaction-manager="myJtaManager"> <tx:attributes> <tx:method name="delete*" propagation="REQUIRED" /> <tx:method name="save*" propagation="REQUIRED" /> <tx:method name="update*" propagation="REQUIRED" /> <tx:method name="*" propagation="REQUIRED" /> <tx:method name="find*" propagation="SUPPORTS" read-only="true"/> <tx:method name="get*" propagation="SUPPORTS" read-only="true"/> <tx:method name="fetch*" propagation="SUPPORTS" read-only="true"/> <tx:method name="*_noTrans" propagation="NOT_SUPPORTED"/> </tx:attributes> </tx:advice>
5、jtom 还需要一个配置文件 carol.properties ,内容是:
# do not use CAROL JNDI wrapper carol.start.jndi=false # do not start a name server carol.start.ns=false # Naming Factory carol.jndi.java.naming.factory.url.pkgs=org.apache.naming
文件放在classpath下面,也就是src下面。
6、需要jtom的以下jar:
7、经过测试,配置是成功的。事务可以回滚。
评论
7 楼
呵呵6666
2016-11-28
6 楼
liuxiaolu
2015-01-13
楼主,你好,我按照你这样配置,事务没有控制成功,ibaties的配置是<bean id="sqlMapClient_pxA" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="classpath:sqlmap/sqlmap-config.xml" />
<property name = "dataSource" ref="dataSourceA"/>
</bean>
<bean id="sqlMapClient_pxB" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="classpath:sqlmap/sqlmap-config.xml" />
<property name = "dataSource" ref="dataSourceB"/>
</bean>
<bean id="sqlMapClientTemplateA" class="org.springframework.orm.ibatis.SqlMapClientTemplate">
<property name="sqlMapClient">
<ref bean="sqlMapClient_pxA" />
</property>
</bean>
<bean id="sqlMapClientTemplateB" class="org.springframework.orm.ibatis.SqlMapClientTemplate">
<property name="sqlMapClient">
<ref bean="sqlMapClient_pxB" />
</property>
</bean>
<property name="configLocation" value="classpath:sqlmap/sqlmap-config.xml" />
<property name = "dataSource" ref="dataSourceA"/>
</bean>
<bean id="sqlMapClient_pxB" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="classpath:sqlmap/sqlmap-config.xml" />
<property name = "dataSource" ref="dataSourceB"/>
</bean>
<bean id="sqlMapClientTemplateA" class="org.springframework.orm.ibatis.SqlMapClientTemplate">
<property name="sqlMapClient">
<ref bean="sqlMapClient_pxA" />
</property>
</bean>
<bean id="sqlMapClientTemplateB" class="org.springframework.orm.ibatis.SqlMapClientTemplate">
<property name="sqlMapClient">
<ref bean="sqlMapClient_pxB" />
</property>
</bean>
5 楼
bo_hai
2014-11-23
今天再来复习了一下Spring分布式事务管理,发现了一个可能管理更好的JTA的第三方开源JAR:BTM。参考资料:http://docs.codehaus.org/display/BTM/Spring+Framework
4 楼
bo_hai
2012-12-18
3 楼
bo_hai
2012-12-18
http://mengqingyu.iteye.com/blog/571388
这个blog讲更详细。
这个blog讲更详细。
2 楼
bo_hai
2012-12-17
chenxiang105 写道
什么样的场景比较合适使用 多数据源 呢?
具体是个什么场景? 我们现在项目很大, 有快2000个表了, 但是数据源依然是一个.. 并发压力也较大..
具体是个什么场景? 我们现在项目很大, 有快2000个表了, 但是数据源依然是一个.. 并发压力也较大..
可以把2000个分别放到不同的数据库中,这样减轻了数据库的压力。当在工程中要使用多个数据库时,就要使用多数据源。
1 楼
chenxiang105
2012-12-17
什么样的场景比较合适使用 多数据源 呢?
具体是个什么场景? 我们现在项目很大, 有快2000个表了, 但是数据源依然是一个.. 并发压力也较大..
具体是个什么场景? 我们现在项目很大, 有快2000个表了, 但是数据源依然是一个.. 并发压力也较大..
发表评论
-
nginx 配置 CORS 支持跨域访问
2014-11-11 20:26 11523CSS代码设置了一些字体,如果跨域访问这些字体,就会加载失败 ... -
lockInterruptibly 和lock的区别
2014-09-03 11:04 3196这是个被无数人写过并还会被其他人继续写下去的blog。 代 ... -
Spring MVC 的单元测试实例
2014-08-15 16:48 820一、先定义实例: public class BaseTes ... -
HTTPClient 简单使用
2014-08-15 13:47 1050HttpClient 的用模拟http请求的工具,一般用在 ... -
tomcat 配置虚拟主机实例
2014-07-29 14:20 1421一、先来解释一下虚拟主机的概念:在一个tomcat上放多个工 ... -
Eclipse3.6 安装EGit
2014-07-08 21:56 527Eclipse3.6 安装EGit地址是 http://do ... -
ThreadPoolExecutor 中饱和策略分析
2014-07-03 15:25 2180import java.util.concurrent.Ti ... -
FutureTask 实例
2014-06-29 10:56 596先来总结一下FutureTask使用场景: 如果不想分支线 ... -
ReadWriteLock 使用实例
2014-06-28 20:21 805首先来讨论ReadWriteLock 类的使用场景,记住一句 ... -
安全发布单例模式
2014-06-27 17:24 6031、最简单的方法: public class Singl ... -
JAVA notifyAll wait 实例
2014-06-27 13:55 474两个线程,分别有两数据结构:1到10的数据和A到E的字符。 ... -
获取机器CPU数量的方法
2014-06-22 15:58 520public class CPUNum { /** ... -
动态代理的实现
2014-06-17 21:26 438public interface IHelloWorld ... -
线程同步优化实例
2014-06-11 17:56 488代码如下: package com.bohai.thre ... -
JavaScript 遍历JSON 获取key value
2014-04-30 16:20 550if (!$.isEmptyObject(subProdIn ... -
计算器算法(支持加减乘除括号)
2014-04-19 17:53 5537import java.util.ArrayList; i ... -
实用工具类 && CollectionUtils
2014-04-19 13:53 7809import java.util.ArrayList; ... -
解决fatal: unable to connect to github.com问题
2014-04-08 16:43 2157问题: 在使用Aptana Studio3 ... -
JAVA多线程 Semaphore 应用
2014-01-24 16:04 475import java.util.concurrent.Ex ... -
JAVA多线程 Exchanger 应用
2014-01-24 15:42 597import java.util.concurrent.Ex ...
相关推荐
很好的spring+ibatis事务的配置文档.
代码下载下来,想要了解更多相关内容可以看http://www.cnblogs.com/shamo89/p/7307961.html
struts2+spring+ibatis+mysql AOP日志管理,异常捕获 tomcat6.0+jdk1.6
struts+spring+ibatis的Demo struts+spring+ibatis的Demo struts+spring+ibatis的Demo
有关Struts2+Spring+Hibernate和Struts2+Spring+Ibatis的整合实例demo 原创,完全基于eclipse开发
struts+spring+ibatis做的一个增删改查例子
struts2+spring+Ibatis框架包
是不是好东西你们去鉴定,SpringMVC + Spring + ibatis 可以配置多数据源,这个Demo 扩展性极强,就看你们自己如何发挥。
SPRING与IBATIS整合采用保留IBATIS事务,可自己控制回滚!
webwork+spring+ibatis很适合初学者的实例
里面有spring+struts2+ibatis整合的jar包,
JSF+Spring+Ibatis示例,对学习JAVA企业应用开发有巨大的帮助!
struts2+spring+ibatis+oracle+分页搜索+上传附件实例!完整版!
maven3+struts2+spring+ibatis,本来是用maven3+struts2+spring+hibernate但考虑到hibernate在多表级联查询的时候执行效率不高,所以改用性能更好不过sql比较麻烦的的ibatis,本项目只有登录和插入数据,仅供参考: ...
spring+ibatis+oracle分页缓存源码
struts2 + spring + ibatis 实例 struts2 + spring + ibatis 实例 struts2 + spring + ibatis 实例 struts2 + spring + ibatis 实例 struts2 + spring + ibatis 实例
struts2+spring+ibatis的小demo
Struts+Spring+Ibatis整合框架搭建配置文档
一个简单的struts+spring+ibatis示例的源码,在源码中包含一个简单的分布功能
Struts+Spring+Ibatis环境配置(一) - zwjxf的专栏 - 博