JTA事务管理
何为分布式事务
一个事务包含多个操作,多个操作操作了多个数据源,这样的事务称为分布式事务
和普通事务的区别
单一数据源,事务管理可以借助数据源本地事务完成,实现简单
分布式事务之困难:不可简单的借助数据源本地事务完成
为什么:
但是这样的事务有保障吗?
1、提交时,db1提交成功,db2网络不通
2、提交时con1提交完成,此时应用重启了或者应用及其断电了
分布式事务管理需要什么?
分布式事务管理需要:
1协调各数据源提交、回滚、以及应对通信异常的管理机制
2数据源需要支持这种机制
3应对应用恢复的机制
从上面可以得出,做分布式事务管理需要的参与者
如果是这样,那么
1 事务管理器协调数据源,两者之间需要通信,并需要一套协议规范
2为应对网络,主机故障等,事务管理器,数据源需要记录相关的事务日志
何为XA规范
X/Open(The open group)提出的分布式事务处理规范,分布式事务处理的工业标准
XA-DTP
X/Open Distributed Transaction Processing(DTP)model分布式事务处理模型
XA-流程
XA-两阶段提交
JTA是什么?
JTA: Java Transaction Api
Java 根据XA规范提出的事务处理规范
目的:同意API,简化程序员的学习,简化编程
JTA-API-构成
面向TM、RM提供商的API:
面向编程者的API:
UserTransaction
Jta-tm实现提供商
JavaEE应用服务器内建JTA事务管理(TM),提供商:
Weblogic,websphere
开源、独立的JTA事务管理器(TM)组件:
Java Open Transaction Manager(JOTM)
JBoss TS
Bitronix Transaction Manager(BTM)
Atomikos
Narayana
Jta-rm实现提供商
在连接池组件中一般也会提供包装实现:
Spring中应用JTA
Spring 自身并未提供jta TM实现,但提供了很好的集成
根据TM的提供者不通,分为两种应用方式
方式一:使用JavaEE服务器内建的TM,用法做如下配置即可
或
说明:JtaTransactionManager通过JNDI找到服务器提供的java:comp/UserTransaction,
java:comp/TransactionManager
应用使用的数据源需是支持xa的数据源
方式二:在没有实现TM的应用服务器上(Tomcat,jetty),将独立的TM组件集成到
我们的应用中
一:使用轻量级服务器+集成TM组件
二:使用轻量级服务器+集成TM组件
1、引入TM组件的jar(以Atomikos为例)
2、配置数据源,一定要是XA数据源
3、配置事务管理器TM
TransactionManager的实现bean
UserTransaction的实现bean
spring的JtaTransactionManager(注入TM、UserTransaction)
准备两个数据源
最新文章
- monkeyrunner之测试结果判断(八)
- jquery_选择器
- ios学习之UIViewControl生命周期
- 【Spring】Spring系列1之Spring概述
- 统计机器学习(statistical machine learning)
- JavaScript 弹出窗体点击按钮返回选择数据的实现
- 【python】运算优先级
- libev事件库学习笔记
- $.each()方法,其实挺不错的
- 《JS权威指南学习总结--8.8.4 记忆函数》
- mybatis 详解(四)------properties以及别名定义
- MapReduce-实践1
- C语言博客作业—字符数组
- openflow流表分析(草稿)
- Vue.js文档
- 菜鸟入门【ASP.NET Core】2:部署到IIS
- Loadrunder场景设计篇——添加windows Resource计数器和指标说明
- 成为Java顶尖程序员 ,看这11本书就够了
- 高手写的“iOS 的多核编程和内存管理”
- 【LeetCode】164. Maximum Gap (2 solutions)
热门文章
- [Leetcode easy]存些水题34、20、700
- Vue语法学习第四课(1)——组件简单示例
- nginx配置支持http2
- Spring源码学习(8)——SpringMVC
- [RESTful] RESTful是什么,为什么要使用它
- foreach 使用 引用&; $value . 使用 unset($value)
- <;FAT文件系统>; -- DBR
- CSS效果:焦点图片
- Java学习笔记(4)
- django channle的使用