何为分布式事务

 

一个事务包含多个操作,多个操作操作了多个数据源,这样的事务称为分布式事务

和普通事务的区别

单一数据源,事务管理可以借助数据源本地事务完成,实现简单

分布式事务之困难:不可简单的借助数据源本地事务完成

为什么:

但是这样的事务有保障吗?

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事务管理的更多相关文章

  1. JTA事务管理--配置剖析(二)

    Spring引用Tomcat的 JTA事务     Tomcat是Servlet容器,但它提供了JNDI的实现,因此用户可以象在Java EE应用程序服务器中一样,在Tomcat中使用JNDI查找JD ...

  2. JTA事务管理--配置剖析

    概述    [IT168 专稿]Spring 通过AOP技术可以让我们在脱离EJB的情况下享受声明式事务的丰盛大餐,脱离Java EE应用服务器使用声明式事务的道路已经畅通无阻.但是很大部分人都还认为 ...

  3. springboot多数据源+jta事务管理配置

    1.创建一个maven项目,导入相关配置: <?xml version="1.0" encoding="UTF-8"?> <project x ...

  4. Spring+JTA+Atomikos+mybatis分布式事务管理

    我们平时的工作中用到的Spring事务管理是管理一个数据源的.但是如果对多个数据源进行事务管理该怎么办呢?我们可以用JTA和Atomikos结合Spring来实现一个分布式事务管理的功能.了解JTA可 ...

  5. hibernate事务管理 (jdbc jta)

    hibernate的两种事务管理jdbc 和jta方式.下边说说两者的区别一.说明一下jdbc和jta方式事务管理的区别:JDBC事务由Connnection管理,也就是说,事务管理实际上是在JDBC ...

  6. atomikos实现多数据源支持分布式事务管理(spring、tomcat、JTA)

    原文链接:http://iteye.blog.163.com/blog/static/1863080962012102945116222/   Atomikos TransactionsEssenti ...

  7. SpringBoot2 整合JTA组件,多数据源事务管理

    本文源码:GitHub·点这里 || GitEE·点这里 一.JTA组件简介 1.JTA基本概念 JTA即Java-Transaction-API,JTA允许应用程序执行分布式事务处理,即在两个或多个 ...

  8. Spring事务管理(转)

    1 初步理解 理解事务之前,先讲一个你日常生活中最常干的事:取钱. 比如你去ATM机取1000块钱,大体有两个步骤:首先输入密码金额,银行卡扣掉1000元钱:然后ATM出1000元钱.这两个步骤必须是 ...

  9. Hibernate 事务管理

    一. 事务包含四个基本特性:简称ACID: 1. Atomic(原子性):全部成功或全部失败: 2. Consistency(一致性):只有合法数据才能被写入,不合法则回滚到最初状态: 3. Isol ...

随机推荐

  1. 机器学习 xgboost 笔记

    一.数据预处理.特征工程 类别变量 labelencoder就够了,使用onehotencoder反而会降低性能.其他处理方式还有均值编码(对于存在大量分类的特征,通过监督学习,生成数值变量).转换处 ...

  2. day13笔记

    1:StringBuffer(掌握) (1)用字符串做拼接,比较耗时并且也耗内存,而这种拼接操作又是比较常见的,为了解决这个问题,Java就提供了 一个字符串缓冲区类.StringBuffer供我们使 ...

  3. Excel汉字转换拼音首字母缩写的函数

    打开Excel->工具->宏->Viaual Basic编辑器在弹出来的窗口中对着VBAproject点右键->插入->模块下面会出现一个名为"模块1" ...

  4. 第2次作业 -- 熟悉 JUnit 测试

    2.1 Mooctest 使用心得 Mooctest很方便,可以即时测评自己写的测试代码,获得覆盖率和报告,不需要自己安装配置环境 而且安装配置插件的环境也很简单,可以专注于测试本身 2.2 Juni ...

  5. Windows挂载NFS共享盘

    Centos7添加NFS方法请见如下链接: https://www.cnblogs.com/jackyzm/p/10285845.html 一:添加NFS服务 1.1:此电脑-右键-管理-window ...

  6. 汉诺塔问题-递归实现-JAVA

    public class hanio { /** * @param args */ public static void main(String[] args) { // TODO Auto-gene ...

  7. 零基础学习JavaSE(一)

    一.开发环境安装配置 1.1 安装jdk jdk下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 下载后安 ...

  8. blender 3d模型软件介绍(开源,免费,易用,强大)

    关于BLENDER Blender是一个开源的多平台轻量级全能三维动画制作软件 具有建模,雕刻,绑定,粒子,动力学,动画,交互,材质,渲染,音频处理,视频剪辑以及运动跟踪,后期合成等等的一系列动画短片 ...

  9. 没有与这些操作数匹配的 "<<" 运算符 操作数类型为: std::ostream << std::string

    错误显示:没有与这些操作数匹配的 "<<" 运算符       操作数类型为:  std::ostream << std::string 错误改正:要在头文 ...

  10. 修改VScode行号区的背景颜色

    vs code是相当不错的一个编辑器,现阶段我用来编写nim程序. vs code非常丧心病狂一点就是行号区和编辑区的背景颜色都是一样, 这样会导致要看行首有没有对齐会非常吃力.这个问题让我纠结了非常 ...