- 1、本文档共44页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
24.java事务
java事务 中间件 中间件处于应用软件和系统软件之间,是一种以自己的复杂换取企业应用简单化的可复用的基础软件。 在中间件产生以前,应用软件直接使用操作系统、网络协议和数据库等开发,开发者不得不面临许多很棘手的问题,如操作系统的多样性,繁杂的网络程序设计和管理,复杂多变的网络环境,数据分散处理带来的不一致性,性能和效率、安全问题等等。这些问题与用户的业务没有直接关系,但又必须解决,耗费了大量有限的时间和精力。 于是,有人提出将应用软件所要面临的共性问题进行提炼、抽象,在操作系统之上再形成一个可复用的部分,供成千上万的应用软件重复使用。这一技术思想最终形成为了中间件产品。 事务中间件/交易中间件 IBM CICS BEA Tuxedo J2EE服务器等等 Microsoft MTS(COM+) 东方通国内第一个交易中间件TongEASY 基于CORBA的VisiBroker /middleware/tpm/tpm.html 什么是事务 为了完成对数据的操作,企业应用经常要求并发访问在多个构件之间共享的数据。这些应用在下列条件下应该维护数据的完整性(由应用的商务规则来定义): (1)分布式访问一个单独的数据资源 (2)从一个单独的应用构件访问分布式资源。 在这种情况,可能要求在(分布式)资源上的一组操作被当作一个工作单元(unit)。在一个工作单元中, 操作的所有部分一起成功或失败并恢复。 事务 模拟一个商业交易,应用程序需要完成几个步骤。例如,一个财物应用程序,可能会将资金从支票帐户(checking account)转到储蓄账户(saving account),该交易的伪码表示如下: begin transaction debit checking account credit savings account update history log commit transaction 三个步骤要么全部完成,要么一个都不做。否则数据完整性将被破坏。因为事务中的所有步骤被看作一个统一的整体,所以事务一般被定义为一个不可分割的工作单元。 事务 结束事务有两种方法:提交或者回滚。当一个事务提交,数据修改被保存。如果事务中有一个步骤失败,事务就回滚,这个事务中的已经执行的动作被撤销。例如在上面的伪码中,如果在处理第二步的时候硬盘驱动器崩溃,事务的第一步将被撤销。尽管事务失败,数据的完整性不会被破坏,因为帐目仍然保持平衡。 前面伪码中,begin和commit标明了事务的界限。当设计一个企业Bean的时候,你要决定怎样通过容器管理或bean管理事务来指定事务界限。 事务的ACID 属性 (1)原子性(ATOMICITY): 一个事务要被完全的无二义性的做完或撤消。在任何操作出现一个错误的情况下,构成事务的所有操作的效果必须被撤消, 数据应被回滚到以前的状态。 (2)一致性(CONSISTENCY): 一个事务应该保护所有定义在数据上的不变的属性(例如完整性约束)。在完成了一个成功的事务时, 数据应处于一致的状态。换句话说,一个事务应该把系统从一个一致状态转换到另一个一致状态。举个例子,在关系数据库的情况下, 一个一致的事务将保护定义在数据上的所有完整性约束。 事务的ACID 属性 (3)隔离性(ISOLATION): 在同一个环境中可能有多个事务并发执行,而每个事务都应表现为独立执行。串行的执行一系列事务的效果应该同于并发 的执行它们。这要求两件事: 在一个事务执行过程中,数据的中间的(可能不一致)状态不应该被暴露给所有的其他事务。两个并发的事务应该不能操作同一项数据。数据库管理系统通常使用锁来实现这个特征。 (4)持久性(DURABILITY): 一个被完成的事务的效果应该是持久的。 应用构件 职责: a.建立和界定事务 b.传播事务上下文 c.通过资源管理器操作数据 应用构件是事务性资源的客户。它们是应用开发者用于实现商务事务的程序。在事务管理器的帮助下,这些构件建立全局事务, 如果需要的话传播事务上下文,并在这些事务的范围内操作事务性资源。这些构件不负责实现保护事务的 ACID 属性。但是作为应用逻辑的一部分 ,这些构件通常做是提交还是回滚一个事务的决定 资源管理器 职责:a.向事务服务器应征资源 b.参与两阶段提交和恢复协议 一个资源管理器是一个管理持久和稳定的数据存储系统的构件,并且参与同事务管理器的两段提交和恢复协议。 一个资源管理器典型的是一个稳定的存储系统上的一个驱动器或一个包装,有操作数据的接口(给应用构件), 并且为了参与由事务服务器协调的两阶段提交和恢复协议。这个构件也可以,直接的或间接的,向事
文档评论(0)