深入探寻JTA的体系架构

JTA 为 J2EE 平台提供了分布式事务服务,它隔离了事务与底层的资源,实现了透明的事务管理方式。本文将深入探寻 JTA 的体系架构,并通过详细的代码介绍其实现机制。

什么是事务处理

事务是计算机应用中不可或缺的组件模型,它保证了用户操作的原子性 ( Atomicity )、一致性 ( Consistency )、隔离性 ( Isolation ) 和持久性 ( Durabilily )。关于事务最经典的示例莫过于信用卡转账:将用户 A 账户中的 500 元9001.html">人民币转移到用户 B 的账户中,其操作流程如下
1. 将 A 账户中的金额减少 500
2. 将 B 账户中的金额增加 500
这两个操作必须保正 ACID 的事务属性:即要么全部成功,要么全部失败;假若没有事务保障,用户的账号金额将可能发生问题:
假如第一步操作成功而第二步失败,那么用户 A 账户中的金额将就减少 500 元而用户 B 的账号却没有任何增加(不翼而飞);同样如果第一步出错 而第二步成功,那么用户 A 的账户金额不变而用户 B 的账号将增加 500 元(凭空而生)。上述任何一种错误都会产生严重的数据不一致问题,事务的缺失对于一个稳定的生产系统是不可接受的。

J2EE 事务处理方式

1. 本地事务:紧密依赖于底层资源管理器(例如数据库连接 ),事务处理局限在当前事务资源内。此种事务处理方式不存在对">应用服务器的依赖,因而部署灵活却无法支持多数据源的分布式事务。在数据库连接中使用本地事务示例如下:

清单 1. 本地事务处理实例

public void transferAccount() { Connection conn = null; Statement stmt = null; try{ conn = getDataSource().getConnection(); // 将自动提交设置为 false, //若设置为 true 则数据库将会把每一次数据更新认定为一个事务并自动提交 conn.setAutoCommit(false); stmt = conn.createStatement(); // 将 A 账户中的金额减少 500 stmt.execute("\ update t_account set amount = amount - 500 where account_id = 'A'"); // 将 B 账户中的金额增加 500 stmt.execute("\ update t_account set amount = amount + 500 where account_id = 'B'"); // 提交事务 conn.commit(); // 事务提交:转账的两步操作同时成功 } catch(SQLException sqle){ try{ // 发生异常,回滚在本事务中的操做 conn.rollback(); // 事务回滚:转账的两步操作完全撤销 stmt.close(); conn.close(); }catch(Exception ignore){ } sqle.printStackTrace(); } }

时间: 2024-10-27 11:31:06

深入探寻JTA的体系架构的相关文章

WebLogic集群体系架构(原创)

WebLogic Server集群概述  WebLogic Server 群集由多个 WebLogic Server 服务器实例组成,这些服务器实例同时运行并一起工作以提高可缩放性和可靠性.对于客户端而言,群集是一个WebLogic Server 实例.构成群集的服务器实例可以在同一台计算机上运行,也可以位于不同的计算机上.可以通过向现有计算机上的群集中添加更多的服务器实例来增加群集的容量,也可以向群集中添加计算机以承载递增的服务器实例.群集中的每个服务器实例必须运行同一版本的 WebLogic

从空间角度诠释安全体系架构:花瓶模型V3.0

["防护-监控-信任"体系:"五边界"."五控点"."三验证"] 入侵就是要意想不到,出现在你不注意的角度与方位:若你还没有看清楚入侵者是谁前就盲目动作,往往步步被动,被对手牵着走."用空间赢得时间"是安全设计的常用理念,空间换取的是你可以反应和准备的响应时间.在现实生活中这很容易理解,但在"虚拟的网络上",如何建立网络空间的概念,如何设计安全体系架构呢? 花瓶模型(V2.0)是从时间维

MySQL的体系架构概述

做DBA三年多,接触过很多主流数据库产品,但唯独没机会碰触MySQL,今天开始决定自学MySQL,给自己 冲冲电,先从MySQL的体系架构开始学起. MySQL数据库的体系架构如下图所示: 从上 图中可以看出,MySQL主要分为以下几个组件: 连接池组件 管理服务和工具组件 SQL接口组件 分析器组件 优化器组件 缓冲组件 插件式存储引擎 物理文件 有其它数据库基础的人可以马上发现,MySQL最大的特色是其可插拔的插件式存储引擎,存储引擎是底层 物理架构的实现,每个存储引擎开发者都可以按照自己的

防火墙体系架构的演变

为了满足用户的更高要求,防火墙体系架构经历了从低性能的x86.PPC软件防火墙向高性能硬件防火墙的过渡,并逐渐向不但能够满足高性能,也需要支持更多业务能力的方向发展. 防火墙在经过几年繁荣的发展后,已经形成了多种类型的体系架构,并且这几种体系架构的设备并存互补,并不断进行演变升级. 防火墙体系架构"老中青" 防火墙的发展从第一代的PC机软件,到工控机.PC-Box,再到MIPS架构.第二代的NP.ASIC架构.发展到第三代的专用安全处理芯片背板交换架构,以及"All In O

软件体系架构模式在J2EE中的应用

本文介绍了软件体系架构产生的背景和架构模式的基本理论.重点介绍管道与过滤器体系架构模式的结构,实现,优缺点等,然后以J2EE的Servlet Filter为例进行剖析它是怎样应用该架构模式的,最后简单阐述了在其它J2ee应用中(Jboss和Axis)的实践. 软件体系架构 1.软件体系架构产生背景 在经历60年代的软件危机之后,使人们开始重视软件工程的研究.来自不同应用领域的软件专家总结了大量的有价值的知识. 当初,人们把软件设计的重点放在数据结构和算法的选择上,如Knuth提出了数据结构+算法

FireBreath v1.4.1发布 跨平台支持浏览器插件体系架构

FireBreath 旨在提供一个跨平台支持的浏览器插件体系架构. 面向: NPAPI 浏览器(windows, mac, and linux): Gecko/Firefox Google Chrome Apple http://www.aliyun.com/zixun/aggregation/11218.html">Safari ActiveX 架构: Microsoft Internet Explorer 6, 7, and 8 FireBreath aims to be a cros

《BI那点儿事》SQL Server 2008体系架构

原文:<BI那点儿事>SQL Server 2008体系架构 Microsoft SQL Server是一个提供了联机事务处理.数据仓库.电子商务应用的数据库和数据分析的平台.体系架构是描述系统组成要素和要素之间关系的方式.Microsoft SQL Server系统的体系结构是对Microsoft SQL Server的主要组成部分和这些组成部分之间关系的描述.Microsoft SQL Server 2008系统由4个主要部分组成,这4个部分被称为4个服务,这些服务分别是数据库引擎.分析服

简述数据中心运维知识体系架构

数据中心要正常运转,离不开大量的运维工作.运维的工作需要很多专业技术人才,要做好数据中心的运维需要掌握多学科.多门类的专业技能,运维的工作不强调人才对一门技术有多专.有深度,但要有广度.出于成本的考虑,数据中心不可能聘入所有专业知识领域的人才,需要的是通用人才.如何才能成为一名优秀的数据中心运维专家呢?本文就来说一说运维工作所需的知识体系架构,根据这个知识体系架构,对自己弱势的部分有针对性地学习,很快就能成为一名数据中心运维专家. 数据中心运维知识可以分为三大部分:运维技术.测试和开发和运维管理

BI的体系架构及相关技术

一个BI系统为了满足企业管理者的要求,从浩如烟海的资料中找出其关心的数据,必须要做到以下几步: 1)为了整合各种格式的数据,清除原有数据中的错误记录--数据预处理的要求. 2)对预处理过数据,应该统一集中起来--元数据(Meta Data).数据仓库(Data Warehouse)的要求: 3)最后,对于集中起来的庞大的数据集,还应进行相应的专业统计,从中发掘出对企业决策有价值的新的机会--OLAP(联机事务分析)和数据挖掘(Data Mining)的要求. 所以,一个典型的BI体系架构应该包含