spring+springmvc+mybatis配置多数据源,事务回滚出现问题。

chengp... 2015-10-13 02:10:04
spring+springmvc+mybatis配置多数据源,事务回滚出现问题。
直接贴代码,请大神帮忙解答一下。
项目结构
配置文件


现在问题是在service里面分别用两个数据源往数据库插入数据,只有数据源1回滚,数据源2没有回滚,当屏蔽掉事务配置transactionManager1及事务注解驱动再分别用两个数据源往数据库插入数据,数据源2回滚了,数据源1没有回滚,目前问题定位在事务配置这里,请大神解答一下怎么回事,需要怎么配置?
以下为serivce代码
...全文
1761 点赞 收藏 14
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lavender136 2018-12-20
在使用@Transaction时加入value=你使用的数据源对应的事务管理器
回复
一言即诺 2018-02-28
1.定义两个DAO分别使用不同的数据源,ADAO连接A数据库,BDAO连接B数据库 2.定义一个Service类,加上Spring注解@Transactional,表示进行事务管理。事务要配置成jta分布式事务。 将ADAO和BDAO注入到Service类里面。 在service类里面创建一个方法,方法里调用ADAO的方法插入数据到A数据库的user表,然后调用BDAO的方法插入数据到B数据库的user表
回复
一言即诺 2018-02-28
http://blog.csdn.net/gaoshili001/article/details/79378902#insertcode 可以参考一下
回复
qq_36519226 2017-07-31
去掉try catch 直接在方法上throws
回复
Larryxu18 2017-04-03
引用 8 楼 discoveryhl 的回复:
[quote=引用 7 楼 discoveryhl 的回复:] 可以参考http://liuu.iteye.com/blog/973218 配置多数据源 参考http://blog.csdn.net/quzishen/article/details/5803721 解决多数据源回滚问题
错了,如果一个方法中有多个不同数据源的事务,回滚还是可能出问题[/quote] 单个services可以指定多个事务 管理器,是不是就能替代JTA, 有没有大神回答下?
回复
Larryxu18 2017-04-03
如果需要保证Mapper1和Mapper2两个任何一个插入失败两个都回滚,那么这是跨库事务,要用JTA 如果你本意只是Mapper1和Mapper2哪个插入失败,回滚失败的那个,只需要在service中分开两个方法调用Mapper1和Mapper2,并指定不同的事务管理器。然后在contorol中调用这两个services方法即可。 目前你的测试结果由于不是跨库事务,然后该service方案只会找到默认第一个事务管理器对应的数据库回滚。
回复
discoveryhl 2016-09-23
引用 7 楼 discoveryhl 的回复:
可以参考http://liuu.iteye.com/blog/973218 配置多数据源 参考http://blog.csdn.net/quzishen/article/details/5803721 解决多数据源回滚问题
错了,如果一个方法中有多个不同数据源的事务,回滚还是可能出问题
回复 2
discoveryhl 2016-09-23
可以参考http://liuu.iteye.com/blog/973218 配置多数据源 参考http://blog.csdn.net/quzishen/article/details/5803721 解决多数据源回滚问题
回复
qq_36208368 2016-09-22
我也遇到这个问题,楼主怎么解决的
回复
兔子托尼啊 2015-10-13
回复
兔子托尼啊 2015-10-13
回复
chengp... 2015-10-13
引用 2 楼 sjlzcj 的回复:
再一个 spring的 多数据源也不是这样玩的,,百度吧 有例子

有demo吗?
回复
sjlzcj 2015-10-13
跨数据库的事物,你要去查查 JTA 的资料
回复
sjlzcj 2015-10-13
再一个 spring的 多数据源也不是这样玩的,,百度吧 有例子
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2015-10-13 02:10
社区公告
暂无公告