您的位置:首页 > 其它

一种面向服务体系结构中消息层异常处理方法

2016-01-16 12:34 295 查看
摘要

一种面向服务体系结构中消息层异常处理方法,该方法通过异常定义超空间和元级定义,对系统中特别是多级服务调用情况下所发生异常进行及时的识别和分析处理,提供多级准确的本地和远程异常产生原因、过滤后的栈信息和地址信息。该方法的异常定义超空间的分配、分段处理以及异常元级定义简化了由于不断扩大的系统规模而新增加异常的定义和处理;消息层异常处理方法分为异常的构造和包装,跟踪栈过滤,异常消息编码和解码处理过程。

权利要求(7)

1、一种面向服务体系结构中消息层异常处理方法,其主要特征是:统一的异常构造或包装处理对服务调用所发生异常进行及时的识别和分析处理;通过异常消息编解码处理提供多级准确的远程异常产生原因、栈信息和地址信息,其步骤如下: 步骤1:用户应用程序初始化异常定义空间中该程序的分段异常; 步骤2:用户应用程序服务调用请求后,发送调用请求消息;如果抛出本地异常,跳转至步骤9; 步骤3:服务组合首先初始化异常定义空间中该分段异常后,接收请求消息;如果抛出本地异常,则跳转至步骤7;
步骤4:服务组合经过请求消息处理后,发送组合请求消息;如果抛出本地异常,则跳转至步骤7; 步骤5:物理服务调用和异常处理过程:物理服务首先初始化异常定义空间中该分段异常;然后接收发送的组合请求消息,调用组合请求处理,物理服务捕获本地异常后,首先调用异常构造/包装处理生成异常结构,然后调用异常消息编码处理生成异常消息,发送异常消息; 步骤6:服务组合处理物理服务异常消息过程:服务组合接收物理服务发送的异常消息后,对异常消息进行解码处理,然后抛出解码后远程异常; 步骤7:服务组合异常处理过程:服务组合捕获异常后,调用异常构造/包装处理生成异常结构;然后调用异常消息编码处理生成异常消息,发送异常消息到用户应用程序;
步骤8:用户应用程序处理服务组合异常消息过程:用户应用程序接收服务组合发送的异常消息后,对异常消息进行解码处理,然后抛出解码后远程异常; 步骤9:用户应用程序异常处理过程:用户应用程序捕获异常后;调用异常构造/包装处理生成异常结构,然后显示异常处理结果,结束异常处理。
2、 如权利要求1所述的方法,其特征在于:用于构造或包装异常所需要的异常定义超空间和元级定义结构;在层次化的面向服务系统中,每一个异常需要有唯一的定义,异常定义的超空间能够保证系统中每一个异 常定义有唯一的空间位置,异常的元级定义不依赖于具体的编程语言。
3、 如权利要求2所述的方法,其特征在于:所述构造或包装异常所 需要的异常定义超空间和元级定义结构时,每一层处理模块或服务定义按 照固定或非固定的大小分段划分每一个异常命名空间。
4、 如权利要求3所述的方法,其特征在于:所述每一层处理模块或 服务定义按照固定或非固定的大小分段划分每一个异常命名空间时,每个 分段可选择一个扩展异常用于一个或多个子空间的扩展。
5、 如权利要求1所述的方法,其特征在于:根据异常分段中的过滤 条件对异常跟踪栈进行有效的过滤处理并形成新的桟信息。
6、 如权利要求1所述的方法,其特征在于:用于面向服务系统中递 增式的多级异常消息结构。
7、 根据权利要求1所述的方法,其特征在于:用于面向服务系统中 异常消息处理的中途异常处理。

说明

一种面向服务体系结构中消息层异常处理方法

技术领域

本发明涉及数据处理、识别和分析处理技术领域,特别是一种面向 服务体系结构中异常处理方法。

背景技术

软件系统正以多种方式变得越来越复杂,必须应对大量新增加的、 更难处理的异常情况。传统意义上,编程语言的异常处理模型依赖于独 特的语言检测错误和査找错误处理程序的方法,或者依赖于操作系统提

供的异常处理机制。对于面向服务体系结构(Service-Oriented Architecture, SOA)来说,许多系统实现和规范为应用开发定义了专用 的错误或故障处理方法,如事后日志查询,服务描述语言(WSDL)中 <wsdl:fault>,简单对象访问协议(SOAP)的〈soap:fault〉机制。

面向服务的体系结构是一个组件模型,本质上是一个相互通信的服 务集,这种通信可能是简单的数据传送或者两个以上的服务组合活动。 服务是由资源(如数据,程序或设备),服务逻辑和消息处理构成的,当 消息到达一个服务时激活使用资源的服务逻辑。基于面向服务体系结构 的网格操作系统(Grid Operating System)实现依赖于XML和Web服 务,以及安全性、策略管理等技术,它使用网程(可以看成是一个特殊 的物理服务)和社区(Agora)的概念,把处理过程分解成多次多级的服 务调用,具体体现在:l)调用过程被分解成多次服务调用,如创建(create),
绑定(bind),调用(invoke); 2)网程最终对物理服务调用组成了多级 服务。在网格操作系统中,多层次调用和远程异常消息传递给异常的识 别和处理带来许多新问题,包括:如何获得准确的异常原因(定义问题); 如何及时获得准确的远程异常发生位置(远程定位问题);如何消除不必 要的异常信息进而快速判断异常(处理性能问题);以及如何解决异常信 息在传递过程中可能发生新的异常问题(异常嵌套问题)。

现有异常处理机制普遍存在的问题是:编程语言的异常处理(包括

4层次化的,支持多种编程语言的专用异常处理模型,如.Net框架)以及嵌 入在异常处理机制(如〈wsdl:fault〉和〈soap:fault〉)和使用这些机制的一 套方法经常因异常处理的不完善而导致丢失有用的异常信息或产生新的 错误;试图解决系统和程序异常情况的规范、分析、验证和测试手段不 能及时提供准确的远程异常信息;异常识别和分析处理特征与所采用的

编程语言特征及方法不兼容可能造成新的错误。从软件系统设计的角度 来看,日志、编程语言、服务描述语言和简单对象访问协议等异常或故 障处理并没有很好满足面向服务体系结构中多层次异常处理的需要,相 关开发工具也没有及时、准确地处理服务架构内(如执行环境,通信协 议,消息交换,扩展模型,动态绑定)可能发生的异常,特别是异常的 定义、识别和分析问题。

发明内容

本发明提供一种面向服务体系结构中消息层异常处理方法,异常元 级定义、识别和分析处理。

为了对面向服务体系结构中的异常情况进行统一、及时的识别和分 析处理,本发明给出异常定义超空间和元级定义结构,多级准确的本地 和远程异常产生的原因、过滤后的栈信息和发生地址信息。

在层次化的面向服务系统中,每一个异常需要有唯一的定义,异常 定义的超空间能够保证系统中每一个异常定义有唯一的空间位置,并且

通过简单的匹配算法可以获得超空间中的异常定义;不同处理层次的异 常定义以命名空间来区分,在同一空间内不同模块或服务的异常定义可 进行分段处理,除唯一的主空间外,其余为扩展空间,异常命名空间结 构为:

DS = (PDS, PSGname, DSName), 其中PDS为父空间,主空间的父空间为空;PSGname为父空间分段名; DSName为命名空间名。

异常命名空间的分段结构为-

SG = (DS, SGN咖e, FilterltemList, Begin, End), 其中,DS为指定的命名空间,SGName为分段名,FilterltemList为本分段跟踪栈过滤条件项表,Begin为本段开始异常号,End为本段尾异常号。 异常定义的超空间结构满足如下条件:

1、 根据不同的处理层次或子系统划分命名空间,通常主空间用于核

心层异常定义,扩展空间用于其它处理层异常定义;

2、 主空间的保留部分用于定义公用协议,所使用的编程语言和系统 异常,如Java语言异常,HTTP错误,SOAP错误,扩展命名空间不设保 留部分;

3、 根据每一层处理模块或服务定义,按照固定或非固定的大小分段 划分每一个空间(保留分段作为主空间的一个特殊分段),通常分段适用 于消息处理单元级异常定义;

4、 每个分段可选择一个扩展异常(段尾)用于一个或多个子空间的 扩展;

5、 每一个处理模块或服务动态初始化相关分段的异常定义,保证异 常定义有唯一的从主空间开始的査找路径。

异常的元级定义不依赖于具体的编程语言,消息层异常处理的实现 通过初始化可将这种元级描述映射到所采用的编程语言结构中,异常元 级定义结构为:

EIDStruct = (DS, Num, ExDesc, ExType), 其中,DS为合法的异常命名空间,Num为在指定空间中分配给该异常的 编号,ExDesc为异常描述说明,ExType为异常类型(保留项)。

消息层异常处理是一个连接不同编程语言、处理模块、核心服务和 具体应用异常处理的桥梁,特别是面向服务体系结构相关的执行环境、 协议和规范的设计和实现,其结构必须保证能够及时、准确地提供本地 和远程的异常识别和分析处理结果,包括单一异常,多级异常的结构, 具体定义如下:

1、单一异常结构分为异常标识(定义)结构部分和异常信息部分, 表示为:

ExStruc = (EIDS加c, EInfoStruc), 其中,EInfoStruc为异常信息部分,定义为:

EInfoStruc = (StackTrace, EMInfo, MIDStruc, UDesc, MContent),其中,StackTrace为过滤后异常栈信息,EMInfo为嵌入异常信息,MIDStruc 为发生异常地址及消息标识结构,PUDesc为处理单元描述信息, MContent为处理消息内容。2、多级异常消息釆用向下递增式的异常包装和转换处理方法进行构造,表示为:Mul伍xMsg = (U EIDStruc, U EInfoS加c ), 其中,UEIDStruc为多级异常标识的有序组合,UEinfoStruc为多级异常信息的有序组合。消息层异常处理采用统一的生成和处理方式,解决有关异常定义、
定位和判断问题,确保及时传递准确的多级异常信息,其使用的技术包 括异常构造和包装,栈过滤,异常消息编码和解码技术,异常消息嵌套 技术,具体如下:1、 构造和包装异常处理步骤如下:1) 捕获所发生的异常;2) 判定是否为已包装异常,如果是已包装异常,则转到第8)步, 否则继续;3) 初始化单一异常结构;4) 查找或识别命名空间中异常定义并设置异常标识;5) 过滤当前跟踪栈并设置栈信息;6) 根据当前消息上下文,设置异常信息结构;7) 生成新的消息层异常结构-,8) 返回异常,结束构造或包装处理。构造异常与包装异常的区别在于前者通过匹配(査找)异常命名空
间和异常号设置异常标识,后者是对捕获到的异常(如编程语言异常) 进行自动识别。2、 栈过滤技术是根据异常分段中的过滤条件对异常跟踪栈进行处理 并形成新的栈信息,具体步骤如下:1) 读取异常定义超空间中异常分段的过滤项表;2) 获得并缓存发生异常时的跟踪栈;3) 读取跟踪栈第一项栈元素;4) 读取过滤表中第一个过滤项;5) 比较跟踪栈元素与过滤表中过滤项,如果匹配,则继续,否则跳 转至第7)步;6) 按顺序将符合过滤条件的跟踪栈元素作为栈信息缓存,并跳转至 第8步;7) 读取过滤表中下一个过滤项,如果非空跳转至第5)步,否则继续;8)
读取缓存的跟踪栈下一项栈元素,如果非空跳转至第4)步,否 则继续;9) 返回被缓存的符合过滤条件的栈信息,结束跟踪栈过滤。3、 对于服务端发生的异常,异常消息编码处理是把构造或包装后的 异常转换成异常消息;解码处理是客户端进行转换和分析接收到的远程 异常消息过程,解码可以看成是一个特殊的包装过程,这个过程首先将 远程异常消息分解成异常标识(EIDStruc)部分和异常信息(EInfoStruc) 部分,然后向下递增式构造多级异常消息(MultExMsg),异常消息编解 码格式如下-1) 被捕获异常描述信息;2)
—组〈MLEH:ExceptionlD wo:〉, < MLEH:ExceptionDesc wo:〉标记 (以后面编号"o区分),其中ExceptionID信息内容格式为:"{" +命名空间+ "}" +分段名+ "." +编号+ "." +类型; ExceptionDesc为异常描述说明;3) —组< MLEH:Exceptionlnfo wo:〉标记(以后面编号wo区分),与〈MLEH:Exc印tionlD wo:〉禾P〈 MLEH:ExceptionDesc "o:>---对应,每个Exceptionlnfo内容为一个单一异常结构的异常信息部分,即过滤后栈信
息(<StaCkTmCe:>),嵌入异常信息(<EMInfo:>),发生异常地址及消息 标识结构(<MIDStruc:>),处理单元描述信息(<PUDesc:>),所处理的 消息内容(<MContent:>)。4、 在异常消息传递过程中可能发生新的异常,中途发生异常可能造 成原有异常消息的丢失;为保证完整的异常消息传递,消息层异常处理 采用嵌入的方法,在新的异常消息中封装原有的异常消息,即设置为入异常信息内容(消息编码以〈EMInfo》为标记)。本发明具有的优点是提供完备的软件异常定义的超空间和统一的元 级定义方法;及时、准确处理本地和远程异常定位和异常嵌套问题的异
常处理技术;以及有利于缩短异常信息识别和传输时间,提高面向服务 系统的处理性能的多级处理和跟踪栈过滤技术;进而简化了由于系统规 模不断扩大而新增加异常的定义和处理,特别是面向服务体系结构中相 关系统、处理模块、协议、规范和服务设计。 本发明的特点有:1、 异常定义的超空间保证面向服务系统的异常定义的唯一性和有效性;2、 软件异常元级定义不依赖于编程语言和具体软件实现;3、 消息层异常处理通过跟踪栈过滤技术有效地减小了异常栈的信息4、 消息层异常处理把准确的本地和远程异常信息及时提供给客户 端,尤其是多级异常消息的处理;5、
对异常消息传递过程中可能发生新的异常,消息层异常处理提供 封装原有异常信息的处理方法。本发明的积极效果有:提供完备的异常定义的超空间和统一的异常 元级定义、识别和分析方法,及时给出准确的本地和远程的异常信息并 可避免中途异常发生可能造成的异常信息丢失问题;消除了在使用和理 解不同软件异常处理机制上产生的困扰以及处理方式不兼容可能造成的 错误;有效避免了软件系统特别是面向服务体系结构中不必要的异常处 理代码的出现。附图说明下面结合附图和实例对本发明进一步说明。图1是面向服务体系结构中消息层异常处理流程图。图2是构造/包装异常处理过程。图3是网格操作系统中多层次调用和消息传递示意图。9具体实施方式图中101发送服务调用请求消息;102发送服务组合调用请求消息;
103发送物理服务异常消息;104发送服务组合异常消息;301,306, 314 客户端接口; 302,307,315输出消息处理过程;303, 308, 311, 316, 320输 入/输出消息;304,309,312,317输入消息处理过程;305, 310, 313, 318服 务接口; 319标准输入/输出。图1给出了消息层异常处理流程, 一种面向服务体系结构中消息层 异常处理方法,其主要特征是:统一的异常构造或包装处理对服务调用 所发生异常进行及时的识别和分析处理;通过异常消息编解码处理提供 多级准确的远程异常产生原因、栈信息和地址信息,其步骤如下:步骤1:用户应用程序初始化异常定义空间中该程序的分段异常;步骤2:用户应用程序服务调用请求,通过(101)发送调用请求消
息;如果抛出本地异常,跳转至步骤9;步骤3:服务组合初始化异常定义空间中该分段异常;从(101)接 收请求消息;如果抛出本地异常,则跳转至步骤7;步骤4:经过请求消息处理后,通过(102)发送组合请求消息;如果抛出本地异常,则跳转至步骤7;步骤5:物理服务调用和异常处理过程如下:1) 物理服务初始化异常定义空间中该分段异常;2) 从(102)接收发送的组合请求消息,并调用组合请求处理;3) 物理服务处理单元抛出本地异常;4) 物理服务捕获该异常;5) 调用异常构造/包装处理生成异常结构;6) 调用异常消息编码处理生成异常消息;7)
如果捕获中途发生异常,则跳转至6);8) 通过(103)发送异常消息;9) 撤销异常空间中本分段异常定义,结束物理服务异常处理。 步骤6:服务组合处理物理服务异常消息过程如下:1) 服务组合从(103)接收物理服务发送的异常消息;2) 异常消息解码处理;3) 处理单元抛出解码后远程异常; 步骤7:服务组合异常处理过程如下:1) 服务组合捕获异常;2) 调用异常构造/包装处理生成异常结构;3) 调用异常消息编码处理生成异常消息;4) 如果捕获中途发生异常,则跳转至3);5) 通过(104)发送异常消息到用户应用程序;6)
撤销异常空间中本分段异常定义,结束服务组合异常处理。 步骤8:用户应用程序处理服务组合异常消息过程如下:1) 通过(104)接收服务组合发送的异常消息;2) 异常消息解码处理;3) 处理单元抛出解码后远程异常; 步骤9:用户应用程序异常处理过程如下:1) 用户应用程序捕获异常;2) 调用异常构造/包装处理生成异常结构;3) 显示异常处理结果,包括多级的本地和远程异常产生原因,过 滤后的栈信息、地址信息和中途异常信息。4) 撤销异常空间中本分段异常定义,结束异常处理。图2给出了从捕获异常到完成构造或包装的异常处理过程。对于捕
获到的未包装异常,首先初始化异常结构,在异常定义超空间内查找或 识别该异常,并设置异常标识结构;然后读取空间分段中过滤项表,获 得当前异常跟踪栈;接下来根据过滤项条件按顺序过滤异常跟踪栈元素, 并缓存过滤后的栈信息;根据当前消息上下文设置异常信息结构;最后 生成消息层异常结构,结束构造或包装处理。在图3中,用户应用程序调用网程接口 (301),经输出消息处理过 程(302)发送输出消息(303);网程服务端传输层接收输入消息(303), 经输入消息处理过程(304)和服务接口 (305)将消息传递给网程服务;
网程服务调用社区接口 (306),经输出消息处理过程(307)发送处理后 的输出消息(308);社区服务端传输层接收输入消息(308),经输入消 息处理过程(309),服务接口 (310)将消息传递给社区服务;社区服务将处理结果返回给网程服务,然后网程服务保留处理结果后返回用户应用程序;其它经网程对社区/物理服务的调用与此类似。图中Gll) (312) (313) (314) (315) (316) (317) (318)组成经过网程调用物理服务 (如批作业服务)的消息处理过程,物理服务调用资源接口,通过标准
输入(319)将执行文件和数据传送给资源服务端并使用资源进行计算(如 批作业),经标准输出(319)给出计算结果;用户应用程序调用网程服 务(320)获得此结果。基于消息层异常处理方法,GOS异常处理实现对Java异常和错误 进行了必要的包装,每个Java异常和错误分配了一个异常号,统一的命 名空间(http:〃org.ict.gos.exception/)和分段(GF_PRI—Exp, 0xl0-4F),其 中Java异常号为0x10-47; Java错误的异常号为0x48-4F, Java异常的说 明信息取自该异常的getMessage()信息。GOS核心层异常分段有:社区服务异常(GOS一AGORA一ERR),网
程服务异常(GOS_GRIP_ERR),路由器服务异常(GOS—ROUTER_ERR), 安全机制异常 (GOS_HANDLER—ERR ), 其命名空间为 "http :〃org. ict. gos • exception/"。GOS系统层用于系统功能的实现和扩展,如网格文件系,网格批作 业处理系统等。在GOS异常机制中允许用户自行定义扩展异常,拥有各自的命名空间(如网格文件系统异常命名空间为:http:〃org.ict.gos.exception/Hotfile/)。在服务端,GOS提供扩展异常的定义
(注册)、封装和抛出功能;在客户端,GOS通过一致的异常的处理机制 捕获并解析这些扩展异常。系统层异常的父空间名为 http:〃org.ict.gos.exception/,分段名为GOS—USR—EXP。GOS物理层即指服务提供者开发的面向用户的功能性服务。这些服务的异常分为两种: 一种是使用GOS异常开发库产生或封装异常;另一种是不采用GOS异常开发库产生或封装异常。对于前者,GOS异常机制 提供物理层异常的产生、封装、捕获和解析功能;后者属于客户端消息 层异常处理不识别的异常,GOS将这种异常统一封装为物理层异常
(http:〃org.ict.gos.exception/, 0x0B)。





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: