Java jta 原理_Java的分布式事务(JTA和XA)

Java的分布式事务(JTA和XA)

Java的分布式事务(JTA和XA)

关于JTA事务和XA事务的介绍

何为分布式事务

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

案例

55214bf49e5c23a491e3ea4bfb7cdd8d.png

为什么不能简单的借助数据源的本地事务

用数据源本地事务代码案例

Con1 = db1.getConn..;

Con2 = db2.getConn..;

Try{

con1.insert….

con2.update….

con1.commit;

con2.commit;

}catche(Exception e){

con1.rollback;

con2.rollback;

}

现在会出现一个问题,就是会有第一个事务提交了但是第二个事务失败了,就保证不了一致性了。所以引入了事务管理器

分布式事务管理需要做什么

协调各个数据源的提交、回滚、以及应对通信异常的的管理机制

数据源本身需要支持这种机制(Innodb引擎是支持的)

应对应用的故障恢复机制

e9f883ca34b9195a1212ba82e0d6a4f0.png

事务管理器是协调数据源的,所以需要一套规范的协议

应对网络、主机故障等 事务管理器和数据源需要记录相关日志

就产生了2套规范 :XA 规范和JTA

何为XA 规范

4a7fff877019f206056c51602f871b04.png

是一套跨语言的标准

XA事务的处理模型

17ee9c03fb5086646090af3c1de1f71e.png

XA的流程

c6e680a1c1f2f5717909ea572c9036ee.png

3.XA的2阶段提交 2PC

c240a1fc72f3221a60b52916ae9bab07.png

JTA 是什么

Java Transaction API

java根据XA规范提供的事务处理标准

目的:统一一个API 简化学习

javax.transaction

javax.transaction-api

1.3

定义了一套的接口

687b04953f2350659a62d59cd154894b.png

c06ff105c431098f3d9ddfc91937461c.png

开源的实现 TM 提供商

Java Open Transaction Manager (JOTM)

JBoss TS

Bitronix Transaction Manager (BTM)

Atomikos

Narayana

RM的提供商

e3e1c52fef971bb3467b7603fd600fbb.png

Spring集成JTA(Atomikos案例)

maven依赖

单纯使用Spring

javax.transaction

javax.transaction-api

1.3

com.atomikos

transactions-jdbc

4.0.6

com.atomikos

transactions-jms

4.0.6

Spring boot

org.springframework.boot

spring-boot-starter-jta-atomikos

2.1.1.RELEASE

bean的配置

init-method="init" destroy-method="close">

value="com.alibaba.druid.pool.xa.DruidXADataSource" />

${db1.jdbc.url}

${jdbc.username}

${jdbc.password}

1

1

10

init-method="init" destroy-method="close">

value="com.alibaba.druid.pool.xa.DruidXADataSource" />

${db2.jdbc.url}

${jdbc.username}

${jdbc.password}

1

1

10

class="com.atomikos.icatch.config.UserTransactionServiceImp"

init-method="init" destroy-method="shutdownForce">

com.atomikos.icatch.standalone.UserTransactionServiceFactory

jtalog

f:/test

class="com.atomikos.icatch.jta.UserTransactionManager"

init-method="init" destroy-method="close"

depends-on="userTransactionService">

class="com.atomikos.icatch.jta.UserTransactionImp"

depends-on="userTransactionService">

class="org.springframework.transaction.jta.JtaTransactionManager"

depends-on="userTransactionService">

Java的分布式事务(JTA和XA)相关教程

UEditor 1.2.5 for java 自定义配置

UEditor 1.2.5 for java 自定义配置 1、自定义工具栏 在editor_config.js文件中,找到,toolbars:…并修改,例: ,toolbars:[[source,preview,fullscreen,print,searchreplace, |, undo,redo, |,removeformat,formatmatch,autotypeset,blockquote,pasteplain,|,

[适合初中级Java程序员修炼手册从0搭建整个Web项目](三)

[适合初中级Java程序员修炼手册从0搭建整个Web项目](三) 前言 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/bin392328206 种一棵树最好的时间是十年前,其次是现在 six-finger-web 一个Web后端框架的轮子从处理Http请求【基于Netty的请求级We

安排新版Java15新特性视频教程

安排,新版Java15新特性视频教程 来源:来自网络,如侵权请告知博主删除,感谢????。 仅学习使用,请勿用于其他~ 不得不说,更新的太快了,虽然你发任你发,但是作为程序员,有些东西还是要知道的。虽然现在不用,但是毕竟是后面的版本。所以,看一下也是情

Java安全通信:HTTPS与SSL

Java安全通信:HTTPS与SSL 1. HTTPS概念 1)简介 HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。这个系

阿里大佬总结,Java高并发必读!

阿里大佬总结,Java高并发必读! 作者:wxdoop 原文:https://blog.csdn.net/qq_36235098 来源:前程有光 进程是计算机中程序关于某几何数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。是操作系统结构的基础 线程可以说是轻量级的进程,是程

HTML5 + Javascript 写出一个钢琴

HTML5 + Javascript 写出一个钢琴 首发:GitHubClub原文:juejin.im/post/6879708939190009869 学生时代的我们如果有像郎朗一样的琴技,想必追起女生会非常的容易,但在以前,一架钢琴对普通家庭来说,消费还蛮高的,所以我们不如自己写一架属于自己的钢琴,

数据结构与算法(Java)——稀疏数组

数据结构与算法(Java)——稀疏数组 文章目录 一、五子棋案例 二、稀疏数组 1.基本介绍 2.代码实现 总结 一、五子棋案例 假如我们要开发一款五子棋程序,使用一个二维数组对棋盘数据进行维护是常见的思路。下面以常见的15x15五子棋盘举例,左图是棋盘,右图则

分布式事件调度框架tiger

分布式事件调度框架tiger 一、背景 在后台,有很多业务场景需要定时处理一个任务,或在某件事情发生后处理一个任务。 比如,dw团队后台数据同步时,一般会每天凌晨某个时间点跑一次数据同步任务。这样的业务场景1(定时处理任务),很适合quartz来处理。 有另外

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值