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)
准备两个数据源


JTA事务管理的更多相关文章
- JTA事务管理--配置剖析(二)
Spring引用Tomcat的 JTA事务 Tomcat是Servlet容器,但它提供了JNDI的实现,因此用户可以象在Java EE应用程序服务器中一样,在Tomcat中使用JNDI查找JD ...
- JTA事务管理--配置剖析
概述 [IT168 专稿]Spring 通过AOP技术可以让我们在脱离EJB的情况下享受声明式事务的丰盛大餐,脱离Java EE应用服务器使用声明式事务的道路已经畅通无阻.但是很大部分人都还认为 ...
- springboot多数据源+jta事务管理配置
1.创建一个maven项目,导入相关配置: <?xml version="1.0" encoding="UTF-8"?> <project x ...
- Spring+JTA+Atomikos+mybatis分布式事务管理
我们平时的工作中用到的Spring事务管理是管理一个数据源的.但是如果对多个数据源进行事务管理该怎么办呢?我们可以用JTA和Atomikos结合Spring来实现一个分布式事务管理的功能.了解JTA可 ...
- hibernate事务管理 (jdbc jta)
hibernate的两种事务管理jdbc 和jta方式.下边说说两者的区别一.说明一下jdbc和jta方式事务管理的区别:JDBC事务由Connnection管理,也就是说,事务管理实际上是在JDBC ...
- atomikos实现多数据源支持分布式事务管理(spring、tomcat、JTA)
原文链接:http://iteye.blog.163.com/blog/static/1863080962012102945116222/ Atomikos TransactionsEssenti ...
- SpringBoot2 整合JTA组件,多数据源事务管理
本文源码:GitHub·点这里 || GitEE·点这里 一.JTA组件简介 1.JTA基本概念 JTA即Java-Transaction-API,JTA允许应用程序执行分布式事务处理,即在两个或多个 ...
- Spring事务管理(转)
1 初步理解 理解事务之前,先讲一个你日常生活中最常干的事:取钱. 比如你去ATM机取1000块钱,大体有两个步骤:首先输入密码金额,银行卡扣掉1000元钱:然后ATM出1000元钱.这两个步骤必须是 ...
- Hibernate 事务管理
一. 事务包含四个基本特性:简称ACID: 1. Atomic(原子性):全部成功或全部失败: 2. Consistency(一致性):只有合法数据才能被写入,不合法则回滚到最初状态: 3. Isol ...
随机推荐
- asp.net IHttpHandler浅析
在asp.net程序中,我们可以通过配置url的path路径的方式,将某个path路径下的请求交给指定的IHttpHandler去处理,这便是对request请求进行编程. 一.新建一个framewo ...
- Python输入数组(一维数组、二维数组)
一维数组: arr = input("") //输入一个一维数组,每个数之间使空格隔开 num = [int(n) for n in arr.split()] //将输入每个数以空 ...
- Win7下“回收站已损坏,是否清空该驱动器上的回收站”解决方法
最近买的移动硬盘,总是不能进行安全删除,有事还会提示“回收站已损坏,是否清空该驱动器上的回收站”,可以通过下面的命令进行解决: 开始–>运行–>cmd 点确定 在cmd窗口输入rd /s ...
- 转 Redis 总结精讲 看一篇成高手系统-4
转 Redis 总结精讲 看一篇成高手系统-4 2018年05月31日 09:00:05 hjm4702192 阅读数:125633 本文围绕以下几点进行阐述 1.为什么使用redis 2.使用r ...
- Bom简单介绍
1.什么是bom? 全称:浏览器对象模型(Browser Object Model) bom是js的一部分, 2.bom的对象,方法和方法 bom提供了主要的8大对象:Window,Screen,Lo ...
- docker学习常用指令---第五章节
前面我们了解了docker的基本概念,和docker镜像,端口相关的内容.在具体的实际操作过程中,我们需要了解一些相关的docker操作指令. 一.Docker save指令 指令功能:将指定镜像保存 ...
- jQuery对象和普通DOM对象的区别
1.DOM对象DOM实际上是以面向对象方式描述的文档模型.DOM定义了表示和修改文档所需的对象.这些对象的行为和属性以及这些对象之间的关系.根据W3C DOM规范,DOM是HTML与XML的应用编程接 ...
- mysql 数据库主从同步
1.简介 写这篇文章是网上找到的相关主从同步的都不够完全,本人第一次搭建主从同步,完全看着网上的文章来搭建的,结果你懂的,踩了很多坑.所以特地把踩到的坑写出来,新手切勿直接布置到正式环境,请于测试环境 ...
- Shell 有类型变量
1.通过 declare 和 typeset 命令 declare 和 typeset 两者等价 declare 和 typeset 都是用来定义变量类型的 下面以 declare 进行总结 2.de ...
- Git从入门到差不多会用
工作以后最先接触到的新东西可能就包括版本控制工具了,对Git的感觉是又敬又畏,敬是因为最初的时候都是跟着同事照猫画虎地通过开发软件图形化操作,大家都不太懂,也不知道这东西有多深奥:畏就是因为有过几次惨 ...