【JSP开源代码栏目提醒】:本文主要为网学会员提供“事务感知的Web服务开发框架 - 会议论文”,希望对需要事务感知的Web服务开发框架 - 会议论文网友有所帮助,学习一下!
计算机科学 2011年10月 October 201 1 Computer Science 事务感知的Web服务开发框架 孙昌爱尚岩李飞 (北京科技大学计算机与通信工程学院 北京100083) 摘要Web服务是目前广泛采用的SOA实现技术,由于松散耦合的特点,如何保证SOA软件的可靠性是一个重 要问题。
在SOA软件开发中引入事务管理是一个可行的解决方案。
然而,现有的、№b服务技术与标准尚未讨论 如何在Web服务的开发过程中支持事务管理。
提出一个支持事务管理的web服务开发框架,以WS-AT协议为 例,详细讨论了将事务行为引入Web服务的基本原理和实施过程。
采用Web服务实例,从增加的运行时间和
代码 量两个方面评估了Web服务支持事务管理的代价。
提出的事务感知的Web服务开发框架有两重意义:一方面,提 供了在Web服务层支持事务管理的方法,弥补了当前Web服务相关技术与标准在事务支持方面的不足;另一方 面,与服务组装层的事务集成机制一起,形成了基于事务的可靠SOA软件开发的系统化解决方案。
关键词 面向服务的架构(s0IA),Web服务,事务管理,WS-AT协议 中图法分类号TP311 文献标识码A Transaction-aware Web Service Development Framework SUN Chang-ai SHANG Yan LI Fei (School of Computer and Cormnunieation Engineering,University of Science and Technology Beijing,Beijing 100083,China) Almract Web services are a widdy practiced implementation technology of S0』L It is an important issue how to ell- sure the reliability of SOA software due tO itS loosely coupled characteristics.One of feasible solutions is tO introduce transaction management into SOA software development.However。
supporting transactions during the Web service development is l’lOt addressed in the efiting Web servieewrehted technologies and standards.In this paper。
we propose a transaction-aware Web service development framework。
and the WS-AT protOcol is used tO illustrate the implemen- tation of the proposed framework.Through the case studies,we further evaluate the performance overhead oI the framework,in terms of execution time delay and Line of Code(LJ∞),due to the introduction of transaetiorraware in- tedaees into Web services.The goal of the pmposed framework is twofold.First,it provides an approach tO suppor- ting transactional behavior in Web services layer,which makes up the current Web services technologies and St=;tl’l- dards.Second,together with the transaction integration mechanism in the service composition layer,it provides a sys- tdnatie solution for the transactiombased reliable SOA software development. Keywords Service oriented architecture(SOA),Web services,Transaction management,WS-AT 面向服务的架构(SCIA)逐渐成为Internet环境 Web服务协调起来完成一些关键的业务过程时,如下的应用程序开发范型〔1〕。
Web服务是SOA基于 何保证SOA软件的可靠性是一个关键问题。
Web的实现。
Web服务由于采用标准的接口描述, 事务是一种实现可靠的业务过程的重要技将多个Web服务组装起来,因此可以构造灵活、复 术〔2〕。
尽管目前已经存在多种面向web服务的事杂的应用程序。
与传统的应用程序相比,松散耦合 务协议,但如何在Web服务层支持事务管理尚未讨是SOA软件的主要特性,这不仅体现在Web服务 论。
本文提出了一个事务感知的Web服务开发框的规格说明与实现的彻底分离,而且Web服务的开 架,以W孓AT为例详细讨论该框架的基本原理与发与集成也是完全独立的。
将这些松散耦合的 实施过程,评估引入事务后的性能开销。
本文受国家自然科学基金(60903003),北京市自然科学基金(4112037),国家教育部博士点基金(2008000401051)资助。
孙昌爱(1974一),男,博士,副教授,主要研究方向为软件工程、服务计算,E-mail:隰sun@ustb.edtL∞;尚岩(1987一),男.硕士生,主要研究方向为Web服务、事务管理;李飞(1988一),男,工程师,主要研究方向为Web服务。
·6· 实现。
且前,研究工作侧重于讨论Web服务事务协1研究背景 议的开发与实现。
事务协议类似于一个有限状态1.1事务 机,事务坍议中间件依据当前的状态控制事务的进 事务的概念起源于数据库领域,目的是提高系 行,即实现事务处理在不同阶段进行状态的迁移。
统的容错性、保证业务过程的可靠执行。
事务是一 由于事务协议并没有定义事务中参与者的行为,如系列用于改变对象状态的操作集合,这些操作在逻 何让事务中的参与者配合事务管理共同完成整个事辑上构成一个执行单元啪。
一个事务一般以一个 务的处理尚未有讨论,即现有的Web服务技术与标。
开始”语句开启,执行一些业务操作后,使用“提交” 准尚未解决如何在服务层支持事务协议。
语句结束。
如果事务中出现异常,则用“回滚”语句 2事务感知的Web服务开发框架撤销本事务的执行结果。
传统的事务使用两阶段提交协议实现,具有ACID属性,即原子性、一致性、独 本节讨论支持事务行为的Web服务开发框架立性、持久性。
4’”。
的基本原理以及实施过程。
1.2 SOA架构下的事务模型与协议 2.1开发框架 在SOA架构下,事务参与方的实现者Web服 标准的Web服务只包含业务操作,为了支持事务属于不同的部门和组织,事务的运行可以跨越不 务管理,必须根据具体的事务协议添加相关的事务同的信任域,并且持续的时间比较长。
与传统的事 操作。
事务协议仅仅负责事务处理过程的状态迁务模型相比,SOA中的事务呈现出一些新特点阻“, 移.而不同的业务流程有不同的事务处理操作。
也 就是说,针对某个具体的事务协议而言t不同的业务如一个事务可能持续很长时间,因此无法锁定事务中的资源}一旦出现错误,根据原子性的要求,此前 流程对应相同的事务操作接口.即接口是业务无关 的;针对事务操作的实现而言,只有事务参与者了解所做的工作全部丢失.事务失败时的回滚动作开销太大,因此需要参与者采用“补偿”技术进行处理;事 具体的操作内容.即参与者的事务处理操作是业务 相关的。
因此,事务感知的Web服务开发的一个关务中的参与者可以随时退出,整个事务仍可以继续 键问题是.如何将事务操作接口与业务操作实现关进行等。
这些特性要求SOA软件必须实现新的事 联起来,提供可靠的业务操作实现。
务协议和模型,以便解决松散耦舍环境下的事务问 提出的事务感知的Web服务开发框架的原理题。
如图l所示。
其核心思想是:在正常的业务操作接 Web服务是SOA软件的基本单元,相关的标 口之外提供事务行为相关的操作接口。
针对具体的准包括九:Web服务描述语言WSDL使用标准的 事务协议提供相关的事务操作,将其封装在事务操XML语言描述了Web服务的接口和绑定;简单对 作接口中,该接口实现业务操作的关键实现步骤(如象访问西议SOAP是一种基于XML的简单消息协 数据库相关写数据操作)。
在事务管理中,事务上下议,Web服务采用该协议进行交互。
为了保证Web 文用于标识事务,事务协议(如ws_AT或WS-BA)服务操作的可靠性.BEA、IBM和Microsolt发布了 为事务管理提供了事务执行的依据,决定了事务感WS-Coordirtation和WS-Transaction规范”】。
其 知Web服务中的事务操作接口。
在事务处理的过中,wSCoordination规范定义了一个通用的协嗣框 程中,业务操作接口用来满足原来的业务需求-而事架,但具体事务西议由WS-Transaction规范定义。
骘!建 务操作接口则被事务管理凋用,用于完成事务中的wS_Transaction规范包含事务协议wsAT(wS_ 状态转换,共同实现事务的控制。
Atomic Transaction)川和WS-BA(WS-Business t4自TnⅨ} ●}¥目∞teb■} ●#f{Activity)t川,WS-AT协议适用于处理遵循ACID属性的原子事务,WS-BA协议适用于处理业务持续时间较长的复杂事务Ⅲ〕。
1.3存在的问题 留l事务感知的Web服务开发框架原理 当SOA软件实现一些重要的业务流程时,如何保证具有松散耦舍特点的SOA软件的可靠性尤为 以WS-AT佛议为例,讨论事务操作接口如何关键。
事务管理是一种实现可靠一致的业务流程的 与事务管理西同完成事务的过程。
根据WS-AT济有效技术。
为了实现基于事务的SOA软件开发,必 议中定义的坍调者和参与者之间传送的消息,参与须在服务组装层和Web服务层支持事务的设计与 者需要实现的接口中至少应该包括prepare、commit ·7‘和rollback等方法。
根据wS-AT协议的状态转换 作调用,具体实现由继承自AbstractPa rtlc【pant的可知.事务管理在界定了一个事务的边界以后,将在 子类完成。
Mediator类继承自AbstractPartieillant事务内部开始执行一系列的状态转换,在状态转换 类,同时也实现了NamedXAResouree这一接口,可的过程中会调用到事务操作接口中的方法。
以认为它是作为事务参与者Web服务在Kandula 图2描述了实现wS-AT事务过程中发生在事 中的代理。
Mediator实现了AbstractParticipant中务发起者、事务管理、事务参与者(服务A和B)之间 的抽象方法与NamedXAResource接口中的方法。
的交互情况。
事务的发起者调用事务管理建立事务 ri忑而;i r———一而i==ri—〕上下文,之后会在业务请求的SOAP消息中嵌入事 {!。
竺竺!堕 E!兰竺唑竺!!塑。
型竺兰!!!竺冀望j务上下文。
参与者在收到该SOAP消息后,检查到 :二‘4≤≥j三:、~二』sOAP头部中含有事务上下文,向协调者进行注册, i美墨d l m:尝品。
k循.,篇;篙器*一J之后进行正常的业务操作。
事务遵循两阶段提交协议,协凋者向参与者发送prepare消息,蠲用参与者 圈3实施中涉厦的Kandula关键粪事务接口中的prepare方法,完成后向协调者发送 在实例化Mediator以及调用参与者的业务操prepared消息;协调者在收到prepared消息后,进行 作之前,二者会调用Bridge中的方法获得JTA中的第二阶段的提交,向参与者发送commit消息,调用 事务管理类TransactionManagerlmpl的实例,然后参与者事务接口中的commit方法,完成后向协调者 调用该实例中的方法获得本次事务.进而向该事务发送co啪itted消息。
协调者完成两阶段提交工作 进行资源的注册。
在事务进行两阶段提交时,kan-后,向事务发起者返回成功结果。
dula最终会渊用到Mediator中的事务操作方法,然 后进行JTA中的事务处理。
由于Mediator和事务 参与者的Web服务类都实现了NamedXAResouree 这一接口.并且二者注册为同一JTA事务,某个时 刻将调用NamedXAResource接口中的方法,因此, kmadula间接调用了参与者web服务中的事务操 作。
Web服务的事务处理操作实现有两种方式。
第一种方法通过NamedXAResource接口实现web 服务的事务处理操作。
Apache的geronimo项目实 现了包括分布式事务JTA规范在内的J2EE标准, 通过org.apache.geronimo.transactior.manage: NamedXhResource包提供了NamedXAResouree 接口。
Kandula可以直接将J2EE中的分布式事务 圈2事务操作接口的调用过程 同Web服务中的事务联系起来’使得现有的业务操2.2开发框架实施的一般过程 作不经修改或经过少许修改,就能够参与到Web服 IBM公司、Apache、JBoss等组织机构开发了支 务事务中来。
该方法适用于web服务已经实现为持wS-AT事务协议的中间件o+”〕。
以
开源项目 JTA事务的情形,具体实现步骤为:Apache Kandula开发的事务管理中间件为例““,讨 (1)参与者web服务实现NamedxAResource论如何实现事务感知的Web服务开发框架。
接口f 图3示出了与事务感知的Web服务开发框架 (2)结合自身业务情况实现上述接口中的方法;实现相关的Kandula关键类。
其中,Bridge类作为 (3)对实现了NamedXAResouree接口的资源一个连接部件将JTA事务同Web服务事务联系起 进行注册。
来。
Ab8tractPanlnpant类定义了参与者的行为,对 第二种方法通过继承AbstraetParticipant类实外提供了统一的事务行为操作,如prepareOpera— 现Web服务的事务处理操作。
AbstractParticipanttion、commitOperation、rollbackOperation等;同时 中的抽象方法由Mediator类实现,而Mediator类中还定义了一些抽象方法,包括prepare、commit、roll— 抽象方法的具体实现又调用到JTA中的操作.之后back、forget等,这些抽象方法将被上述事务行为操 才调用到web服务中的事务操作方法,相当于在 ·8。
AbstractParticipant类与参与者的web服务类之间 紧密相关,ATM服务也是如此。
实现时,使用锁机加了一个抽象层。
若让参与者的Web服务类直接 制和缓存机制支持WS-AT协议所需的事务操作。
继承Ab甜ractPanlcIpant.并针对业务的特点实现其 以两阶段提交协议为例,在第一阶段的准备过程中中的抽象方法,就可以省去第一种方法中的抽象层, 锁定资源,在第二阶段提交过程后再释放资潦。
缓直接开始参与者的事务处理操作。
另外t参与者向 存机制可以用来配合锁机制,业务开始的时候,在缓协调者的注册过程发生在Mediator的实例化过程, 存中建立一份同直实数据一样的拷贝,之后的业务若省去了抽象层,则注册的过程也将被略去。
因此, 操作则全部针对缓存数据,当事务成功提交后将缓需要显式地调用注册方法。
Kandula在其内部的 存数据再写入真实数据库,若事务失败则在回滚的Transaetionrlmpl类中提供了同JTA中类似的方法 时候直接删除缓存数据。
缓存实现方式有多种,我enlIstPanici阳nt,用来完成参与者向协调者的注册 们采用一种简单直观的实现方式.即在数据库中建过程。
该方法适用于Web服务本身没有作为JTA 立一张类似的缓存表,缓存表和事务操作的真实数事务实现的情形,具体实现步骤为: 据库表中的数据一致。
结合2.2节讨论的Web服 (1)参与者web服务继承AbstraetParticipant; 务的事务处理操作实现的两种方式,进一步讨论如 (2)结合自身业务实现AbstractParticipant中 何在ATM服务中支持与实现事务操作接口。
的抽象方法; 3.2实现NamedXAResour拯接口 (3)对AbstraetParticipant的子类进行资源的 在ATM服务实现中,ATMService类提供注册。
Web服务接口,DBSetrice类实现业务操作与散据 库之间的连接,ATMService类调用DBService类提3实例研究 供的接口实现数据查询与更新。
因此,合理的设计 以ATM系统为例,讨论提出的事务感知的 是由DBService类实现NamedXAResource接口中web服务开发框架的实现过程,评估引入事务的性 事务相关的方法,包括start、prepare、commit、end、能开销.
上一篇:
关于android手机的论文
下一篇:
4种小菜缓解孕妈咪不适