热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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-构成

 

面向TMRM提供商的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
springJtaTransactionManager(注入TMUserTransaction)
准备两个数据源

 

 

 

转:https://www.cnblogs.com/hollowcabbage/p/10689751.html



推荐阅读
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • 本文讨论了微软的STL容器类是否线程安全。根据MSDN的回答,STL容器类包括vector、deque、list、queue、stack、priority_queue、valarray、map、hash_map、multimap、hash_multimap、set、hash_set、multiset、hash_multiset、basic_string和bitset。对于单个对象来说,多个线程同时读取是安全的。但如果一个线程正在写入一个对象,那么所有的读写操作都需要进行同步。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
author-avatar
mobiledu2502916347
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有