本文共分两部分:第一部分从事务服务整体描述的角度简要介绍了事务服务产生的动机、事务服务的应用和事务服务的功能,其中以具体的例子解释了相关概念和事务服务涉及到的一些术语;第二部分以J2EE中的事务服务为例对事务的实现作简要的介绍。
第I部分 事务服务简述 事务是一个非常重要的编程概念,使用事务,可以很简单地构造出可靠稳定的应用程序,尤其对那些需要进行并发数据访问的应用程序,事务更是重要的多。事务的概念最初应用在那些用于商务操作的应用程序上,在这些应用中,事务用来保护中央数据库中的数据。随后,随着分布式计算的发展,事务在分布式计算领域中也得到了广泛的应用。现在,在分布式计算领域中,公认为事务是构造可靠性分布式应用程序的关键。 1.1事务产生的动机 1.1.1原子操作 考虑这样一个应用:用户把钱从一个银行账号转账至另一个银行账号,需要将资金从一个银行账号中取出,然后再存入另一个银行账号中。理想来说,这两次操作都应该成功。但是,如果有错误发生,则两次操作都应该失败,否则的话,操作之后其中一个账号中的金额将会是错误的,整个操作过程应该是原子性的,两个操作都是一个原子事务操作的一部分。 可以使用异常处理来处理上述问题,代码如下:
上面这种解决方法从存在着下面的问题:
因此,需要一种事务处理机制来保证这种原子性的操作。 1.1.2 网络故障或机器故障 为了在发生严重故障之后,能够保证系统的状态是一致的,所以需要一种恢复性的机制来保证这一点。 1.1.3 数据共享 需要一种机制来保证多用户并发访问数据的问题。 以上这些问题的解决方法,便是使用事务服务。 1.2 使用事务服务带来的好处 使用事务,便可以利用事务的四个重要属性:ACID。
事务服务支持的应用由下列实体组成:
下图展示了一个简单的事务应用,包含了基本的事务元素:
事务服务提供下列操作:
3.1事务模型
3.2 事务的终止 通过发出提交请求或回滚请求来终止事务。通常,事务是由发起事务的客户(事务发起者)来终止的。 3.3事务的完整性 某些事务服务的实现为了保证事务的完整性,在事务服务接口的使用上施加了一些限制。这称为checked事务行为。例如,在事务的所有任务完成之前提交事务会导致数据不完整。事务服务的Checked实现会阻止事务的过早提交。其他事务服务的实现则完全依赖应用程序来提供事务的完整性保证,这称为unchecked事务行为。 3.4事务的上下文 事务上下文惟一标识了一个事务,保存了事务的当前状态。通过查询事务上下文,可以得知自身是否处于事务中,所在事务的状态以及其他一些有用的信息。 事务上下文可以作为事务操作调用的一部分隐式地传递给事务对象。事务服务也允许程序员将事务上下文作为事务请求的显示参数来传递。 分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。为了实现分布式事务,需要使用下面将介绍的两阶段提交协议。
在分布式事务两阶段提交协议中,有一个主事务管理器负责充当分布式事务协调器的角色。事务协调器负责整个事务并使之与网络中的其他事务管理器协同工作。 为了实现分布式事务,必须使用一种协议在分布式事务的各个参与者之间传递事务上下文信息,IIOP便是这种协议。这就要求不同开发商开发的事务参与者必须支持一种标准协议,才能实现分布式的事务。 以上从事务整体描述的角度简要介绍了事务服务产生的动机、事务服务的应用和事务服务的功能,下面以J2EE中的事务服务为例对事务的实现作简要的介绍。 |
第II部分 J2EE中的事务服务 Java TM2 Platform, Enterprise Edition(J2EE)简化了分布式事务管理应用程序的编写。J2EE包括了两套规范,用来支持分布式的事务,一种是Java Transaction API(JTA),另一种是Java Transaction Service(JTS)。JTA是一种高层的,与实现无关的,与协议无关的API,应用程序和应用服务器可以使用JTA来访问事务。JTS则规定了支持JTA的事务管理器的实现规范,在高层API之下实现了OMG Object Transaction Service(OTS) 1.1规范的Java映射。JTS使用Internet Inter-ORB Protocol(IIOP)来传播事务。作为J2EE平台实现的一部分,SUN实现了一个支持JTS的事务管理器,同时还实现了JTA。 JTA和JTS让J2EE应用服务器完成事务管理,这样就使得组件开发人员摆脱了事务管理的负担。开发者只需在部署描述符中声明事务管理属性,便可以使得EJB组件参与到事务之中,由应用服务器来负责事务的管理。
企业级Java中间件的分布式事务服务包括五层:事务管理器(Transaction Manager)、应用服务器(Application Server)、资源管理器(Resource Manager)、应用程序(Application Program)和通信资源管理器(Communication Resource Manager)。每一层都通过实现一组事务API和相关机制参与到分布式事务处理系统中。
从事务管理器的角度出发,事务服务的具体实现是不需要暴露出来的,只需要定义高层接口,使得事务服务的用户可以驱动事务界限、资源获取、事务同步和事务恢复过程。JTA的目的是定义事务管理器所要求的本地Java接口,从而在企业级分布计算环境中支持事务管理。下图中的小半圆代表JTA规范。 本节从事务管理器实现者的角度描述了实现方面的要求。如下图,事务管理器必须实现JTA接口,用于支持应用服务器和资源管理器。不要求实现对JDBC 1.0 Driver和非JTA资源管理器支持。也不要求实现对各种CORBA应用实体的支持,如事务客户端(Transactional Client)、事务服务器(Transactional Server)和恢复服务器(Recoverable Server)。 Java Transaction API由三部分组成:高层的应用事务划分接口(供事务客户使用)、高层的事务管理器接口(供应用服务器使用)和X/Open XA协议的标准Java映射(供事务性资源管理器使用)。 4.1 UserTransaction接口 Javax.transaction.UserTransaction接口使得应用程序能够编程控制事务边界。这个接口可以由Java客户端程序或者EJB来使用。 4.1.1在EJB Server中的UserTransaction支持 EJB中对事务的管理有两种类型:
4.1.2 事务客户端中的UserTransaction支持 Java客户端程序需要首先通过JNDI来获得UserTransaction对象的引用,然后使用该对象的方法完成事务的开始、提交或者回滚。
4.2 TransactionManager接口 应用服务器使用javax.transaction.TransactionManager接口来代表受控的应用程序控制事务的边界。例如,EJB容器为事务性EJB组件管理事务状态。 4.3 Transaction接口 使用Transaction接口可以执行与目标对象相关联的事务操作。 4.4 XAResource接口 Javax.transaction.xa.XAResource接口是基于X/Open CAE规范(分布式事务处理:XA规范)工业标准XA接口的Java映射。 XAResource接口定义了分布式事务处理环境(DTP)中资源管理器和事务管理器之间是如何交互的。资源管理器的资源适配器实现了XAResource接口,将事务同事务资源联系起来,类似关系数据库的一个连接。 4.5 Xid接口 Javax.transaction.xa.Xid接口是X/Open事务标识符XID结构的Java映射。这个接口由事务管理器和资源管理器来使用,对于应用程序和应用服务器而言这个接口是不可见的。 |
发表评论
-
The sample of calendar
2006-01-25 14:09 668public List getWorkDailyLogList ... -
Common command in java
2006-02-06 13:17 697J2EE应用/|__EJB组件/(haiejb.jar)| ... -
细说Java之util类
2006-02-13 10:36 403线性表,链表,哈希表是常用的数据结构,在进行Java开发时,J ... -
tag
2006-03-21 10:58 924>“山高人为峰”,这句话也可以用在技术的研究上。 ... -
《最后期限》-项目管理101条重要原则
2006-05-24 21:31 820《最后期限》-项目 ... -
the difference of Hashtable and HashMap
2006-05-27 13:16 6961.Hashtable是Dictionary的子类,HashM ... -
the address of Resource
2006-08-30 14:32 757相关JAR包:spring-framework-1.1.5 : ... -
Java中如何正确使用字体编码
2006-12-21 21:44 577在Java编程中,中文字体编码难倒了不少程序员,如果抓住了影响 ... -
Java线程总结
2006-12-26 22:45 733首先要理解线程首先需 ... -
21种代码的“坏味道”
2007-01-16 17:48 8441.Duplicated Code代码重复几乎是最常见的异 ...
相关推荐
从johnny's事务所浅析日本明星培训体系.docx
### 浅析PostgreSQL事务处理机制 #### PostgreSQL简介 PostgreSQL是一款开源的对象关系数据库系统,其历史可以追溯至1977年,由Michael Stonebraker领导的加州伯克利分校的INGRES项目发端。它支持大部分SQL标准,...
MS SQL Server 2000中的事务机制是关系型数据库管理系统中的一个核心概念,它保证了数据库操作的可靠性。事务是一组操作的集合,这些操作要么全部完成,要么全部不完成,从而保证了数据库的一致性。事务的ACID属性是...
浅析Oracle事务.pdf
本文主要针对SQL事务进行浅析,特别是如何在实际操作中应用事务,如银行转账问题的处理。事务是一组数据库操作,它们被视为单一的逻辑工作单元,必须满足ACID属性,即原子性、一致性、隔离性和持久性。 原子性...
### 律师事务所的客户服务与管理相关知识点 #### 一、客户资源是律师事务所生存的基础 - **客户资源的重要性**:客户资源是律师事务所的核心资产之一,对于律师事务所来说至关重要。客户资源不仅包括现有的客户,...
### Innodb存储引擎浅析—事务系统 #### 学述 在MySQL的众多存储引擎中,InnoDB无疑是最为重要且被广泛使用的之一。本文旨在深入解析InnoDB存储引擎中的事务处理机制及其背后的设计原理。 #### 存储引擎介绍 在...
从提供的文件内容中,我们可以提炼出关于Sql Server数据库事务的重要知识点,以下为知识点的详细说明: 1. 事务的基本概念:事务是一系列的数据操作,它们作为一个整体单元要么完全执行要么完全不执行,以保证...
云南省会计师事务所审计质量浅析.pdf
### MySQL核心Innodb存储引擎浅析—事务系统 #### 存储引擎介绍 在MySQL中,存储引擎是处理表的存储方式的核心组件之一。不同的存储引擎提供了不同的特性,如事务支持、锁定粒度等。其中,MyISAM和InnoDB是最常用...
【国内会计师事务所内部治理浅析】 随着我国经济的快速发展,会计师事务所在市场中的角色日益重要,成为企业和公众获取专业会计服务的关键机构。面对激烈的市场竞争和国际化的挑战,会计师事务所需要建立科学、合理...
【摘要】中提到的议题是会计师事务所的激励机制,特别是以全球知名会计师事务所普华永道...对于本土会计师事务所来说,借鉴并优化激励机制,以缩小与国际领先事务所的差距,提升服务质量,将是未来发展的关键。
国内会计师事务所内部治理浅析.pdf
【标题】:浅析中小事务所非审计业务拓展 【描述】:本文主要探讨了中小事务所在非审计业务拓展上的现状、面临的问题及相应的解决策略。通过对国内外文献的回顾,指出非审计业务对审计独立性的影响是双面的。接着...
在介绍SQL Server数据库事务锁机制之前,首先需要了解锁的概念。锁是网络数据库中的一个非常重要的概念,主要用于在多用户环境下保证数据库的完整性和一致性。锁通过指示某个用户(即进程会话)已经占用了某种资源,...
浅析美国建筑事务所经营管理模式.doc
《3G无线视频服务器系统浅析》这篇文献主要探讨了3G无线视频服务器系统的关键技术和应用,该系统基于3G通信网络,旨在提升手机用户的通信质量和数据业务性能。以下是文章中涉及的重要知识点: 1. **3G无线视频...