分布式事务-04-JTA+Atomikos
JTA 接口规范
一共8个接口:
XAResource:XA资源管理器接口,RM提供给TM调用。XAResource接口是基于X/Open CAE规范(分布式事务处理:XA规范)的行业标准XA接口的Java映射。
Xid:Xid接口是X/Open事务标识Xid结构的Java映射。此接口指定三个方法:,分别获取:全局事务的格式化ID、全局事务ID和分支限定符。TM和RM使用Xid接口。此接口对AP和AS都不可见。
Status:定义事务状态。共指定10个状态
Synchronization:同步接口。事务同步允许AS在事务完成之前和之后从TM获得通知。
Transaction:事务定义接口。每个全局事务都与一个事务对象关联。
TransactionManager:事务管理器。管理事务的全生命周期。
TransactionSynchronizationRegistry:事务同步注册器。用于系统级AS组件(如持久化管理器)。这提供了注册具有特殊排序语义的同步对象、将资源对象与当前事务关联、获取当前事务的事务上下文、获取当前事务状态以及将当前事务标记为回滚的能力。
UserTransaction:事务客户端,封装了用户可直接操作事务的接口。
注意:
这些接口都不需要开发者去实现:
XAResource、Xid 由数据库厂商实现。
TransactionManager、UserTransaction等操作事务相关的接口由AS厂商实现(例如web服务就是jboss、weblogic,或者第三方事务类库jotm、Atomikos)。
用户只需要使用UserTransaction的实现类来操控事务的创建、提交、回滚即可!当然简单点直接使用注解也是可以的。
Atomikos
底层通过Connection执行各项命令, 而Connection是一个JDK动态代理, 在mapper组件prepareStatement的时候, 会根据methodName来拦截执行执行各种方法
说白了就是封装原先的操作, 原来可能是手动开启的, 自己通过逻辑判断等实现的流转, 现在只需要注解就能实现
整合JTA, 根据其要求实现对应的接口, 最底层的逻辑是调用JDBC的接口