Web服务环境下的事务处理系统的制作方法

文档序号:7613812阅读:198来源:国知局
专利名称:Web服务环境下的事务处理系统的制作方法
技术领域
本发明涉及的是一种网络技术领域的系统,具体是一种Web服务环境下的事务处理系统。
背景技术
事务处理是一系列操作的组合,这些离散的操作使得系统从一个一致的状态演变到另一个一致的状态。这些离散的操作要么全部成功,要么全部失败。并且,如果事务失败,系统能够回滚到可预知的一致的状态。事务处理是简化编程逻辑,构建可靠分布式应用的基础技术。Web服务可用于各种环境下的应用程序集成,从简单的数据共享到大规模的电子商务和货币交易。Web服务基于统一的XML的标准在应用程序之间交换接口提供应用程序间的互操作性,从而这些应用程序可以在不同的企业之间、不同的平台之间实现跨平台和语言的无缝通信。Web服务技术是构造分布式计算的主流技术之一,但是还没有很好的支持事务处理。如果Web服务被用于工业,必须确保它们在事务环境中运行的时候,以可靠的和可预知的方式工作。但是在传统的事务处理中,Web服务只能够使用独立于其他组件的事务——在Web服务的方法范围里划分的和服从它的底层的事务实现的规则——并且物理上不能离开Web服务或者进入另一个Web服务。而且,传统的事务处理必须满足事务ACID的属性,从而需要在事务持续的过程中对参与事务的资源进行锁定而防止其他事务对该资源进行访问,但是在Web服务环境下的事务持续时间可能远远长于传统事务,无法承受长时间资源锁定的高昂代价,需要对事务的ACID属性进行放宽,通过其他比如事务补偿之类的方式来达到逻辑上的事务ACID属性。
经对现有技术的文献检索,至今尚未发现与本发明主题相同或者类似的文献报道。

发明内容
本发明的目的在于针对传统事务处理在Web服务环境下的局限,提供一种Web服务环境下的事务处理系统,使其可以对跨越多个Web服务的事务性分布式计算提供事务处理的支持,使用Web服务作为分布式计算的业务系统将可以以一种可预知的方式运行。
本发明是通过以下技术方案实现的,本发明包括协调器组件、协调服务组件、激活服务组件、注册服务组件、参与服务组件、完成服务组件、事务协调上下文组件和客户端组件。其中事务协调上下文组件是一个XML格式的消息,其余的组件将作为Web服务部署,它们都是系统的必要组成部分;客户端组件则是为了方便应用程序发起和提交事务而提供的调用接口,是系统的扩展部分。客户端应用通过客户端组件向协调服务组件请求发起一个新的事务,协调服务组件为新的事务创建一个相应的事务协调器并通过协调器组件保存起来,协调服务组件同时会向激活服务组件请求创建一个新的事务协调上下文组件并且返回这个新的事务协调上下文组件给客户端组件。此后参与事务的客户端应用和Web服务均可以通过该事务协调上下文组件向注册服务组件进行注册。最后客户端应用可以向客户端组件要求进行事务提交或终结,客户端组件则调用完成服务组件来进行事务的提交或中介,最终完成服务组件会通过协调器组件调用参与服务组件对所有参与该事务的参与者进行提交或者终结。
所述的协调器组件,协调服务组件保存的系统运行过程中使用到的协调器,协调器组件为每一个事务活动保存一个协调器实例,保存事务参与者的列表、接受完成服务要求事务提交或者回滚的请求并且调用参与服务对参与者进行提交或者回滚。
所述的协调服务组件,接受客户端组件的请求为新发起的事务活动创建相应的事务协调器,并且负责保存和管理事务协调器组件。协调服务组件还负责向激活服务请求创建新的协调上下文。
所述的激活服务组件,在一个新的事务发起的时候接受客户端组件的请求创建新的事务协调上下文组件;该协调上下文组件将返回给协调器组件保存,此后系统的各组成部分都可以通过事务的ID从协调器组件中获得该事务协调上下文组件。
所述的注册服务组件,允许Web服务作为事务参与者注册到事务协调上下文组件中,参与者的地址和使用的协调协议等信息将被保存在协调器组件中。
所述的参与服务组件,用于响应协调器组件发起的事务性操作请求,根据协调器组件的请求对相应的事务参与者进行提交或者回滚等事务性操作。
所述的完成服务组件,用于接收和处理客户端组件发起的要求事务提交或者终止的事务性请求;完成服务组件将向对应的协调器组件发起事务请求,并且最终由参与服务完成相应的事务性请求。
所述的事务协调上下文组件类似于传统事务处理中的事务上下文,保存了事务参与者和事务协调器等相关信息,系统各组成部分通过该协调上下文进行通讯使得分布的多个Web服务的行为集中到同一个事务环境中。
所述的客户端组件,接受客户应用程序的请求发起、终结或者提交一个事务。客户端应该提供用于划分事务边界的应用程序接口供客户程序调用,从而简化事务性Web服务应用系统的编码工作。
与传统事务处理相比较,本发明能够调整事务的上下文从而将分布在多个Web服务的参与者的行为集合在一起,并且进一步的,通过确保每个参与者均完全同意各自在协调上下文组件中执行的操作来产生可预期的结果,或者在存在不同意见时全部取消已执行操作回到可预期的仍旧是一致的结果。
本发明可以对跨越多个Web服务的事务性分布式计算提供事务处理的支持,可以通过扩展传统事务处理系统,将传统的事务处理集成到Web服务环境中来,从而原先服务内部使用传统事务处理的Web服务可以将事务处理的支持从单个服务内部扩展到跨越多个事务。特别的,本发明扩展了J2EE环境下的JTA事务,使得已经部署在J2EE平台上的Web服务可以在无须修改代码的情况下支持Web服务的事务。这是通过将特定的JTA事务从J2EE环境中导出到Web服务环境,和将Web服务环境下的事务导入到J2EE环境来实现的。
本发明通过扩展Axis的Handler使得事务协调上下文组件可以隐式的在多个Web服务之间进行传播,从而事务可以在多个Web服务之间进行隐式的传播,而无需额外的编程来控制Web服务事务协调上下文组件的传播,从而简化并减轻系统集成编程人员的工作。


图1为本发明的系统结构示意图。
图2为本发明处理事务处理的一个实际调用顺序图。
具体实施例方式
如图1所示,本发明包括协调器组件、协调服务组件、激活服务组件、注册服务组件、参与服务组件、完成服务组件、事务协调上下文组件和客户端组件。客户端应用通过客户端组件向协调服务组件请求发起一个新的事务,协调服务组件为新的事务创建一个相应的事务协调器并通过协调器组件保存起来,协调服务组件同时会向激活服务组件请求创建一个新的事务协调上下文组件并且返回这个新的事务协调上下文组件给客户端组件。此后参与事务的客户端应用和Web服务均可以通过该事务协调上下文组件向注册服务组件进行注册。最后客户端应用可以向客户端组件要求进行事务提交或终结,客户端组件则调用完成服务组件来进行事务的提交或中介,最终完成服务组件会通过协调器组件调用参与服务组件对所有参与该事务的参与者进行提交或者终结。
本发明各组件以协调服务组件为中心,针对参与活动的事务的各个参与者与对应协调器之间的通信调整事务协调上下文组件,从而使得事务可以跨越多个Web服务,实现对Web服务环境下的事务支持。
整个Web服务事务处理系统的这些服务组件,可以部署在同一个机器上,也可以部署在不同的机器上。它们本身也是一些Web服务,使用和普通的Web服务相同的方式访问。客户端组件则是简单的应用程序接口,可以作为库函数进行发布,应用程序只需要简单的调用即可。
激活服务组件提供了createCoordinationContext操作响应协调服务组件请求创建新的事务协调上下文组件的消息“createCoordinationContext”。
注册服务组件提供了registerParticipant操作响应协调器组件请求注册参与者的消息“registerParticipant”。
协调服务组件提供了getCoorintionContext操作响应客户端组件要求创建一个新的协调器的消息“createCoordinationContext”,提供了getCoordinator操作用来响应客户端组件要求创建一个新的协调器的消息“createCoordinator”。
协调器组件则提供了getCoordinationContext操作供客户端和参与者获得协调上下文组件;提供了registerParticipant供参与者注册到当前事务环境中;提供了getTransactionID返回当前事务的ID;提供了commit和rollback操作供完成服务组件调用,以提交或者回滚一个事务。
完成服务组件提供了commit和rollback操作供客户端组件调用来提交或者回滚一个事务,具体的操作又将调用事务对应的协调器组件的响应的操作。
参与服务组件提供了commit,prepare,rollback操作供协调器组件调用,用来对具体的事务参与者要求进行提交、准备或者回滚。
客户端组件则提供了beginTransaction、cancelTransaction和confirmTransaction的操作供客户应用程序简单的发起和完成一个事务。
如图2所示,本发明一个实际的事务处理的调用过程,客户端向客户端组件发送“beginTransaction”消息请求发起一个新事务,客户端组件则向协调服务组件发送一个“getCoordinator”的消息请求创建一个新的协调器,协调服务组件为新的事务创建一个新的协调器并且保存在协调器组件的一个哈希表中通过事务ID进行索引;新的协调器创建之后,协调服务组件又向激活服务组件发送“createCoordinationContext”的消息要求创建一个新的事务协调上下文组件,激活服务组件则创建一个新的上下文组件并且放在“CoordinationContext”中返回给协调服务组件,最终协调器上下文组件会由消息“getCoordinatorResponse”返回给客户端组件,客户端组件则发送一个“transactionBegun”的消息告知客户端应用事务已经创建。
此后每次调用一个事务性的web服务,都首先由该服务向注册服务组件发送“registerParticipant”的消息请求注册成为参与者,注册服务组件通过协调器将保存参与者的列表,最终返回“registerResponse”消息给参与者。
最终,客户端应用选择提交事务,客户端组件向完成服务组件发送“提交”消息,完成服务进一步向协调器组件发送“提交”消息,协调器组件又向参与服务组件发送“提交”消息,最终参与服务组件在完成事务提交之后返回“提交响应”消息给协调器组件,协调器组件又将“提交响应”消息通过完成服务组件返回给客户端组件。最终应用程序根据从客户端组件获得的“提交响应”的消息判断事务是否成功。
与传统的分布式事务技术相比,本发明使用了一个类似于传统事务上下文的事务协调上下文组件,并且增加了激活服务组件、注册服务组件、参与服务组件、完成服务组件来创建和管理事务协调上下文组件,从而将分布的事务参与者的行为集中到事务协调上下文组件所代表的事务环境中来。
权利要求
1.一种Web服务环境下的事务处理系统,包括协调器组件、协调服务组件、事务协调上下文组件和客户端组件,其特征在于,还包括激活服务组件、注册服务组件、参与服务组件、完成服务组件,客户端组件则是为了方便应用程序发起和提交事务而提供的调用接口,客户端应用通过客户端组件向协调服务组件请求发起一个新的事务,协调服务组件为新的事务创建一个相应的事务协调器并通过协调器组件保存起来,协调服务组件同时会向激活服务组件请求创建一个新的事务协调上下文组件并且返回这个新的事务协调上下文组件给客户端组件,此后参与事务的客户端应用和Web服务均通过该事务协调上下文组件向注册服务组件进行注册,客户端应用向客户端组件要求进行事务提交或终结,客户端组件则调用完成服务组件来进行事务的提交或中介,最终完成服务组件会通过协调器组件调用参与服务组件对所有参与该事务的参与者进行提交或者终结。
2.根据权利要求1所述的Web服务环境下的事务处理系统,其特征是,所述的协调器组件,协调服务组件保存的系统运行过程中使用到的协调器,协调器组件为每一个事务活动保存一个协调器实例,保存事务参与者的列表、接受完成服务要求事务提交或者回滚的请求并且调用参与服务对参与者进行提交或者回滚。
3.根据权利要求1所述的Web服务环境下的事务处理系统,其特征是,所述的协调服务组件,接受客户端组件的请求为新发起的事务活动创建相应的事务协调器,并且负责保存和管理事务协调器组件,协调服务组件还负责向激活服务请求创建新的协调上下文。
4.根据权利要求1所述的Web服务环境下的事务处理系统,其特征是,所述的激活服务组件,在一个新的事务发起的时候接受客户端组件的请求创建新的事务协调上下文组件,该协调上下文组件将返回给协调器组件保存,此后系统的各组成部分都可以通过事务的ID从协调器组件中获得该事务协调上下文组件。
5.根据权利要求1所述的Web服务环境下的事务处理系统,其特征是,所述的注册服务组件,允许Web服务作为事务参与者注册到事务协调上下文组件中,参与者的地址和使用的协调协议信息将被保存在协调器组件中。
6.根据权利要求1所述的Web服务环境下的事务处理系统,其特征是,所述的参与服务组件,用于响应协调器组件发起的事务性操作请求,根据协调器组件的请求对相应的事务参与者进行提交或者回滚事务性操作。
7.根据权利要求1所述的Web服务环境下的事务处理系统,其特征是,所述的完成服务组件,用于接收和处理客户端组件发起的要求事务提交或者终止的事务性请求;完成服务组件将向对应的协调器组件发起事务请求,并且最终由参与服务完成相应的事务性请求。
8.根据权利要求1或者3或者4所述的Web服务环境下的事务处理系统,其特征是,所述的事务协调上下文组件,类似于传统事务处理中的事务上下文,保存了事务参与者和事务协调器信息,系统各组成部分通过该协调上下文进行通讯使得分布的多个Web服务的行为集中到同一个事务环境中。
9.根据权利要求1或者3或者4所述的Web服务环境下的事务处理系统,其特征是,所述的事务协调上下文组件是一个XML格式的消息。
10.根据权利要求1所述的Web服务环境下的事务处理系统,其特征是,所述的客户端组件,接受客户应用程序的请求发起、终结或者提交一个事务,客户端提供用于划分事务边界的应用程序接口供客户程序调用,从而简化事务性Web服务应用系统的编码工作。
全文摘要
一种网络技术领域的Web服务环境下的事务处理系统,其中,客户端应用通过客户端组件向协调服务组件请求发起一个新的事务,协调服务组件为新的事务创建一个相应的事务协调器并通过协调器组件保存起来,最后返回一个新的事务协调上下文组件给客户端组件,此后参与事务的客户端应用和Web服务均通过该事务协调上下文组件向注册服务组件进行注册,客户端应用向客户端组件要求进行事务提交或终结,客户端组件则调用完成服务组件来进行事务的提交或中介,最终完成服务组件会通过协调器组件调用参与服务组件对所有参与该事务的参与者进行提交或者终结。本发明事务处理可在多个Web服务间进行隐式传播,从而简化并减轻系统集成编程人员的工作。
文档编号H04L29/02GK1737763SQ200510029490
公开日2006年2月22日 申请日期2005年9月8日 优先权日2005年9月8日
发明者饶若楠, 戚正伟, 吴永华 申请人:上海交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1