JTA
文章平均质量分 81
ItOYoung
咩咩咩~
展开
-
Spring事务和Atomikos源码分析
Spring事务和Atomikos源码分析 spring-tx spring-tx模块是Spring实现事务管理功能的核心所在,以注解+AOP切面的方式将事务注入到业务代码中。 实际应用中只要加上@Transactional即可,spring框架下Atomikos分布式事务控制也依托于此模块实现。 TransactionInterceptor 所有声明式事务控制的入口 public class TransactionInterceptor extends TransactionAspectSupport原创 2021-03-16 00:39:37 · 301 阅读 · 0 评论 -
XA协议和JTA规范
XA协议 XA协议,实现Java分布式事务的基础之一,其他还有TCC模式,提供分布式事务处理规范,包含二阶段提交(2PC),三阶段提交(3PC)两种实现 X/Open DTP 模型包括应用程序( AP )、事务管理器( TM )、资源管理器( RM )、通信资源管理器( CRM )四部分 两阶段提交 协调者向所有参与者发送事务,询问是否可以提交事务,当所有参与者都反馈yes,协调者才会向所有参与者发送正式事务提交请求,反馈no或者超时,协调者则向所有参与者发送事务回滚请求 提交成功 提交失败,事务回原创 2021-03-14 15:39:54 · 745 阅读 · 0 评论 -
Atomikos事务失效之配置类问题
Atomikos事务失效之配置类问题 前言 之前搭建多数据源和分布式事务架构时,已经实际测试了确实可以实现多数据源切换抛异常后,所有事务成功回滚。但是之后在整合Shiro后,发现了原本的UserService的某个方法回滚事务失败,在切换第三个数据源进行操作抛异常后,第一和第二个数据源中的sql竟然被commit了,这让我觉得很诧异。 后面我解决BUG后,强行制造了一个空指针异常,用JRebel重新加载后,发现事务竟然又生效了!之后我又多次进行测试,发现项目启动后UserService的事务实际已经失效,其原创 2021-03-13 03:41:17 · 826 阅读 · 0 评论 -
多数据源切换和分布式事务控制
SpringBoot2.x+Druid+Mybatis-plus+Atomikos实现多数据源切换和分布式事务 前言 简介 本次项目的数据库结构为三台服务器,且每台服务器的mysql上分别都有十几个数据库。 复杂的业务场景下,可能不仅要在各个服务器内切换不同的数据源,还要能切换到其他服务器的数据库连接上。 所以我们需要考虑如何实现动态的切换数据源,并保证业务失败时能同时回滚所有的事务,防止数据出错。 环境: SpringBoot + Mysql + Mybatis-plus + Druid + At原创 2021-03-10 23:50:47 · 807 阅读 · 2 评论