首页> 中国专利> 用于面向服务的体系结构应用的Web服务信息管理方法和系统

用于面向服务的体系结构应用的Web服务信息管理方法和系统

摘要

本发明提供了一种用于面向服务的体系结构应用的Web服务信息管理方法和系统,该方法包括:在执行所述应用时在Web服务请求者侧,拦截该Web服务请求者发出的对一Web服务的服务请求消息;在该服务请求消息中添加请求该Web服务的运行时详情的跟踪标头,并发送到该Web服务的提供者侧;在该Web服务的提供者侧拦截来自Web服务请求者的服务请求消息,根据其中的运行时详情跟踪标头,在该Web服务整个执行过程期间,跟踪其运行时详情;在该Web服务提供者返回的响应消息中添加包含所跟踪的运行时详情的确认跟踪标头并返回给该Web服务请求者。本发明实现了对SOA应用中Web服务信息的协同管理,有助于应用的开发、调试和问题分析。

著录项

  • 公开/公告号CN1941771A

    专利类型发明专利

  • 公开/公告日2007-04-04

    原文格式PDF

  • 申请/专利权人 国际商业机器公司;

    申请/专利号CN200510105720.5

  • 发明设计人 易立;毛新生;

    申请日2005-09-27

  • 分类号H04L29/06(20060101);H04L12/58(20060101);

  • 代理机构11247 北京市中咨律师事务所;

  • 代理人于静;李峥

  • 地址 美国纽约

  • 入库时间 2023-12-17 18:33:38

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2011-09-07

    授权

    授权

  • 2007-05-30

    实质审查的生效

    实质审查的生效

  • 2007-04-04

    公开

    公开

说明书

技术领域

本发明涉及面向服务的体系结构应用的开发,具体地,涉及用于面向服务的体系结构应用的Web服务信息管理方法和系统。

背景技术

随着Web服务应用的结构的日益复杂化,第一代Web服务体系结构已不再适应目前Web服务应用的开发需求。因此,在第一代体系结构的基础上提出了一种面向服务的体系结构(Service-Oriented Architecture,SOA)。SOA是一个概念,它定义一个应用可以由一系列独立但又相互协作的子系统或者服务组成。这样的结构使各个服务独立出来,只将需要声明的接口告诉给其他的服务即可。SOA通过采用那些被广泛接受的标准(例如WSDL、XML、XSD、UDDI和HTTP)使各服务在网络中可用,并允许应用寻找和绑定活动的服务(通过UDDI和WSDL),以创建松散耦合的企业业务流程。这样,在SOA中,一个Web服务应用可以由远程的、不同域中的Web服务所构成,从而可以利用跨越多个业务范围的服务流程来取代传统的分层应用。

在SOA中,SOA应用应满足服务级别协议(Service Level Agreement,SLA)以保证企业所购买服务的可靠性和实用性,从而满足企业对服务质量的要求。在此情况下,应用的开发人员和管理员需要掌握SOA应用业务流程与服务参与者进行交互的运行时详情,因此需要获取这些Web服务的运行时信息。可见,SOA应用业务流程中与Web服务进行交互的运行时信息对于应用的开发和Web服务的管理来说都是非常重要的。这就需要有一种管理机制能够获取Web服务管理信息(例如运行时信息等)并对其进行维护。

图1示出了传统的Web服务信息管理模式。在图1所示的传统管理模式中,提供一个管理服务器,该管理服务器与被管理资源进行直接通信以获取服务信息。但是,如图1所示,在SOA应用中,服务请求者通常利用服务代理或其他介体来访问服务提供者,位置透明性(服务请求者不必知道Web服务的位置就可请求该Web服务)和Web服务交互的动态特性为识别被管理资源的实际位置带来了极大的复杂性。此外,如图1所示,由于如上所述的SOA应用的分布式以及松散耦合的特性,使得SOA应用业务流程中可能涉及到跨地域、部门和/或企业边界的服务,在这种情况下,由于各管理域的安全策略,使得与这些不同管理域中的服务进行直接通信以收集其管理信息将是非常困难的。显然,传统的管理模式对于面向服务的体系结构来说是不适合的。

在另一方面,在面向服务的体系结构中,一个Web服务的执行过程可能包含一系列的Web服务调用。收集Web服务的执行过程中的运行时信息对系统管理和维护都有着重要意义。下面将以一个具体的SOA应用实例来说明有关Web服务执行过程中信息收集的问题。图2示出了该应用实例的业务流程。如图所示,一个商店中的虚拟目录服务提供对商品的查找服务。当服务请求者请求该服务时,其将根据业务逻辑和QoS要求调用部署在本地商店、中心办公室中的物理目录服务。其中中心办公室所提供的部分服务是由业务合作伙伴提供的。当本地商店没有库存的情况下,商店会调用中心办公室的仓储服务。中心办公室则会调用距离商店最近的配送中心的服务返回库存情况。在这个Web服务流程中所涉及的服务是在运行时确定的,它们可能分布在不同的管理域或物理位置,由于各管理域和位置处的安全策略不同,使得访问到部署在各地的Web服务的管理信息非常困难和复杂。由于这些限制,使得虚拟目录服务的开发者很难了解指定的Web服务的执行过程,难以识别出其业务流程中的存在的问题或性能瓶颈。当在业务流程中出现某些异常情况时,开发者或管理员无法了解特定执行过程的详细调用图,从而无法收集足够的信息来诊断所出现的问题。

发明内容

为了解决上述问题,本发明提出一种用于面向服务的体系结构应用的Web服务信息管理机制,以解决在分布式SOA应用的情况下对远程、跨域的Web服务信息管理问题,以有助于SOA应用开发过程中的问题诊断和性能优化。

根据本发明的一个方面,提供了一种用于面向服务的体系结构应用的Web服务信息管理方法,包括:在执行所述面向服务的体系结构应用时,在Web服务请求者侧,拦截该Web服务请求者发出的对一Web服务的服务请求消息;在该服务请求消息中添加请求该Web服务的运行时详情的跟踪标头,并发送到该Web服务的提供者侧;在该Web服务的提供者侧拦截来自该Web服务请求者的服务请求消息,根据其中的运行时详情跟踪标头,在该Web服务针对于该服务请求消息的执行期间,跟踪其运行时详情;以及在该Web服务提供者返回给该Web服务请求者的响应消息中添加包含所跟踪的运行时详情的确认跟踪标头并将其返回给该Web服务请求者。

根据本发明的另一方面,提供了一种Web服务请求者侧的消息拦截器,包括:消息截获模块,用于截获在执行面向服务的体系结构应用时Web服务请求者与Web服务提供者之间传送的消息;消息分析模块,用于对所述消息截获模块所截获的消息进行分析,以识别出从Web服务请求者发出的服务请求消息和来自Web服务提供者的包括跟踪标头的响应消息;跟踪标头添加模块,对从该Web服务请求者发出的服务请求消息添加请求Web服务的运行时详情的跟踪标头,并通过消息截获模块发送给该Web服务的提供者;以及管理信息获取模块,根据来自Web服务提供者的响应消息中的确认跟踪标头,获取该Web服务的运行时详情,并将所获取的该Web服务的运行时详情传送给一管理服务器。

根据本发明的另一方面,提供了一种Web服务提供者侧的消息拦截器,包括:消息截获模块,用于截获发送到该Web服务提供者侧的消息;消息分析模块,用于对所述消息截获模块所截获的消息进行分析,以识别出从Web服务请求者发来的包括请求该Web服务运行时详情的跟踪标头的服务请求消息和该Web服务返回的响应消息;运行时详情跟踪模块,在所述消息分析模块识别出包括跟踪标头的服务请求消息时,在该Web服务针对于该服务请求消息的执行期间,对其运行时详情进行跟踪;以及确认跟踪标头添加模块,在所述消息分析模块识别出该Web服务返回的响应消息时,在该响应消息中添加包含所跟踪的运行时详情的确认跟踪标头,并通过所述消息截获模块将其发送给Web服务请求者。

根据本发明的又一方面,提供了一种用于面向服务的体系结构应用的Web服务信息管理系统,包括:所述Web服务请求者侧的消息拦截器;所述的Web服务提供者侧的消息拦截器;以及管理服务器,用于对Web服务的管理信息进行维护。

利用本发明的用于面向服务的体系结构应用的Web服务信息管理机制,有效解决了在分布式松散连接的SOA环境中对动态Web服务交互的运行时详情收集问题,从而有助于对SOA应用的远程支持和问题诊断。利用本发明,通过获得SOA应用业务流程中每一次Web服务调用的运行时详情,可以掌握各Web服务之间的调用关系,并据此创建Web服务的运行时拓扑图,这使得对于SOA应用的故障点的诊断和性能瓶颈的识别更加容易。

附图说明

相信通过以下结合附图对本发明具体实施方式的说明,能够使人们更好地了解本发明上述的特点、优点和目的。

图1示出了传统的Web服务信息管理模式;

图2示出面向服务的体系结构应用的具体实例的业务流程;

图3是根据本发明一优选实施例的用于面向服务的体系结构应用的Web服务信息管理系统的示意图;

图4是根据本发明一优选实施例的面向服务的体系结构应用的服务请求者侧的消息拦截器的方框图;

图5是根据本发明一优选实施例的Web服务提供者侧的消息拦截器的方框图;

图6示出根据本发明一优选实施例的用于面向服务的体系结构应用的Web服务信息管理方法的流程;以及

图7示出应用了本发明的面向服务的体系结构应用的具体实例的业务流程和数据相关性分析。

具体实施方式

本发明的目的在于解决由于面向服务的体系结构(SOA)应用的分布式和松散连接的特性导致的Web服务执行过程中运行时信息收集困难,从而影响应用开发维护过程中的问题诊断和有效管理的问题。

图3示出了根据本发明一个实施例的用于SOA应用的Web服务信息管理系统的结构图。

如图3所示,该Web服务信息管理系统300包括管理服务器301、SOA服务请求者侧的消息拦截器302和Web服务提供者侧的消息拦截器303。

在该系统中,管理服务器301不与被管理资源,即Web服务进行直接通信,而是从在执行SOA应用时调用Web服务的SOA服务请求者侧的消息拦截器302处获得Web服务管理信息,并对所获得的Web服务管理信息进行存储或更新等维护操作。

SOA服务请求者侧的消息拦截器302用于拦截在执行SOA应用的SOA服务请求者与所调用的Web服务的提供者之间的消息,通过修改SOA服务请求者所发出的服务请求消息实现对所调用的Web服务的运行时详情的请求,并从该Web服务返回的响应消息中获取所请求的运行时详情。在SOA应用的业务流程中包括Web服务的多级调用的情况下,该SOA服务请求者侧的消息拦截器302也可以看作是根服务请求者处的拦截器。

图4示出了根据本发明一个实施例的SOA服务请求者侧的消息拦截器302的方框图。如图4所示,消息拦截器302包括消息截获模块3021、消息分析模块3022、跟踪标头添加模块3023和管理信息获取模块3024。

消息截获模块3021根据在消息拦截器302中设置的消息拦截规则和该SOA服务请求者侧的安全和管理规则,截获在执行SOA应用的SOA服务请求者与该SOA服务请求者所调用的Web服务的提供者之间传送的消息,并将经过该消息拦截器302的处理之后的所截获的消息发送到该消息的原始目的地。其中在该SOA服务请求者与Web服务提供者之间传送的消息可能包括服务请求消息、响应消息以及包含在该SOA服务请求者与该Web服务的交互过程中所需要的参数、信息、资料、通知等的消息。

消息分析模块3022对消息截获模块3021所截获的消息进行分析,从中识别出服务请求消息,并将其传递给跟踪标头添加模块3023进行处理。此外,该消息分析模块还对来自所调用的Web服务返回的响应消息进行分析,判断其中是否包括采用SOAP标头形式的确认跟踪标头,并将包括确认跟踪标头的响应消息传递给管理信息获取模块3024。

跟踪标头添加模块3023对消息分析模块3022传递来的该SOA服务请求者发出的服务请求消息添加请求所调用的Web服务的运行时详情的跟踪标头。在本实施例中,该跟踪标头采用以下SOAP标头的形式:

<trace contextID=“…”operationID=“…”>

</trace>

其中,contextID和operationID是用于标识一次Web服务调用的上下文标识和操作标识对。例如,<trace contextID=“XYZ”operationID=“R111”>是标识上下文为“XYZ”、操作为“R111”的Web服务调用。在此次Web服务调用期间内执行的任何交互或操作都以该标识对来标识,以便根据该标识对此次Web服务调用期间的Web服务执行情况进行跟踪。

其中,操作标识是跟踪标头添加模块3023根据与服务请求消息对应的操作新生成的全局唯一标识。而对于上下文标识,则如果此时在上下文(例如,在线程局部变量)中存在已有上下文标识的情况下,则直接采用此上下文标识,否则,在不存在已有上下文标识的情况下,跟踪标头添加模块3023将新生成一个全局唯一标识,并将其保存在上下文中,以作为上下文标识。

此外,跟踪标头添加模块3023还可将服务证书添加到跟踪标头部分,以便所调用的Web服务根据此证书对该SOA服务请求者进行认证。

管理信息获取模块3024接收消息分析模块3022识别出的包括确认跟踪标头的响应消息,并根据其中的确认跟踪标头,获取相应的Web服务的运行时详情。需要说明的是,该运行时详情中包括该Web服务针对于该SOA服务请求者发出的服务请求消息的执行期间的调用拓扑,以及该Web服务的管理信息或检索该Web服务的管理信息的路径。此外,为了标识该运行时信息对应于哪一次服务调用,在确认跟踪标头中还包含此次调用所对应的服务请求消息中的上下文标识和操作标识,以便该SOA服务请求者正确地进行Web服务的信息收集。然后,管理信息获取模块3024将所获得的该Web服务的运行时详情传送给管理服务器301,以由管理服务器301对该Web服务的管理数据进行更新和维护,以便用于SOA服务请求者所执行的SOA应用的问题诊断和性能分析等。

此外,在消息拦截器302中,还可以定义前置条件和后置条件检查逻辑,以便根据消息内容和服务上下文触发特殊的管理事件。

现在返回到图3,Web服务提供者侧的消息拦截器303用于在Web服务的提供者侧拦截在该Web服务与该Web服务的请求者之间传送的消息,并在识别出该Web服务的请求者通过服务请求消息中的跟踪标头请求该Web服务的运行时详情的情况下,在该Web服务的执行期间跟踪其运行时详情,并将该运行时详情通过响应消息返回给SOA服务请求者。

需要说明的是,在该Web服务在执行期间又作为服务请求者请求其他Web服务的情况下,消息拦截器303作为服务请求者侧的消息拦截器起作用,即拦截该Web服务对其他Web服务发出的服务请求消息,在其中添加跟踪标头,以请求该其他Web服务的运行时详情。而该其他Web服务则在执行结束后将其运行时详情通过响应消息返回给该Web服务。通过这种方式,通过利用上下文标识和操作标识,可以实现对整个服务调用过程的跟踪。因此,在Web服务请求者侧执行的SOA应用业务流程包括多级Web服务的调用的情况下,该Web服务提供者侧的消息拦截器303可看作是中间服务节点或叶子服务节点处的消息拦截器。

图5示出了根据本发明一个实施例的Web服务提供者侧的消息拦截器303的方框图。如图5所示,消息拦截器303包括消息截获模块3031、消息分析模块3032、运行时详情跟踪模块3033和确认跟踪标头添加模块3034和跟踪标头添加模块3035。

消息截获模块3031根据在消息拦截器303中设置的消息拦截规则,截获在Web服务的请求者与该Web服务的提供者之间传送的消息,并将经过该消息拦截器303的处理之后的所截获的消息发送到该消息的原始目的地。

消息分析模块3032对消息截获模块3031所截获的从Web服务请求者发来的消息进行分析,以识别包括请求该Web服务的运行时详情的跟踪标头的服务请求消息。在识别出这样的服务请求消息的情况下,消息分析模块3032提取出该跟踪标头,将其中的操作标识作为其上下文标识,以在该Web服务针对于该服务请求消息的执行期间使用。并且,在此情况下,消息分析模块3032还指示运行时详情跟踪模块3033在该Web服务的执行期间跟踪其运行时详情。

此外,消息分析模块3032还对该Web服务返回给Web服务请求者的响应消息进行分析,判断相对于该响应消息的服务请求消息中是否包括请求运行时详情的跟踪标头,在存在的情况下,将该响应消息传递给确认跟踪标头添加模块3034,指示其添加确认跟踪标头。

此外,消息分析模块3032还在消息截获模块3031所截获的消息中识别该Web服务在执行过程中发给另一Web服务的服务请求消息。在识别出这样的消息的情况下,消息分析模块3032指示跟踪标头添加模块3035在该服务请求消息中添加跟踪标头。

此外,消息分析模块3032还在消息截获模块3031所截获的消息中识别该Web服务所调用的其他Web服务所返回的响应消息。在识别出这样的消息的情况下,消息分析模块3032指示运行时详情跟踪模块3033获取其中的运行时详情。

运行时详情跟踪模块3033在消息分析模块3032的指示下,在Web服务针对于所接收到的服务请求消息的执行期间,记录其运行时详情,包括该Web服务在执行期间的调用拓扑,及该Web服务在执行期间的管理信息。此外,在消息分析模块识别出从该Web服务所调用的其他Web服务返回的响应消息的情况下,运行时详情跟踪模块3033还根据该响应消息中的确认跟踪标头,获取该其他Web服务的运行时详情,以实现对下一级Web服务的运行时详情的记录。

确认跟踪标头添加模块3034在消息分析模块3032的指示下,从运行时详情跟踪模块3033获取其记录的该Web服务的运行时详情,并将其以确认跟踪标头的形式添加到消息分析模块3032传递来的要发送给Web服务请求者的响应消息中。其中该确认跟踪标头采用以下SOAP标头的形式:

<trace contextID=“…”operationID=“…”>

 <info type=“…”method=“…”>

</trace>

消息体

<managment>

  信息

</managmet>

该确认跟踪标头与上述的服务请求消息中的跟踪标头类似,包括标识此次服务调用的上下文标识和操作标识。该上下文标识和操作标识分别与最初调用该Web服务的服务请求消息中的上下文标识和操作标识相同。“info type”和“method”是指示该响应消息中返回的信息类型以及获得该Web服务的运行时详情的方法。在本实施例中,运行时详情的返回可以采用以下两种方式:

1)带内:将该Web服务的运行时详情直接添加到响应消息中(例如,打包到消息附件中)。这样,可以实现跨域的运行时详情的传递。但这种方法在响应消息中携带的信息量较少。

2)带外:在响应消息中只携带获得该Web服务的运行时详情的方法,例如,路径、地址等。采用这种方法,服务请求者要以单独的操作来获得所需信息,但可以获得详细的大量信息。

现在,仍以前面所举的服务请求消息中的跟踪标头为例,与其对应的响应消息中的确认跟踪标头可以是:

<trace contextID=“XYZ”operationID=“R111”>

  <info type=“inband”method=“MIME”>

</trace>

Message Body

<management>

信息

</managment>

确认跟踪标头添加模块3034在响应消息中添加了确认跟踪标头之后,将其返回给消息分析模块3032,并通过消息截获模块3031发送到该消息的原目的地。

跟踪标头添加模块3035与上述SOA服务请求者侧的消息拦截器302中的跟踪标头添加模块3022的功能类似。其在消息分析模块3032识别出该Web服务在执行期间发送给其他Web服务的服务请求消息的情况下,根据消息分析模块3032的指示,在该服务请求消息中添加请求运行时详情的跟踪标头。该跟踪标头与上述跟踪标头添加模块3022所采用的标头形式相同。其中的上下文标识是该Web服务提供者侧已有的上下文标识,而操作标识是跟踪标头添加模块3035根据该服务请求消息所对应的具体操作而生成的操作标识。

这样,通过利用SOA服务请求者侧和Web服务提供者侧的消息拦截器附加跟踪标头和运行时详情,可以实现在SOA应用的Web服务流程执行期间对Web服务的运行时详情的跟踪和收集,以便更有效的控制SOA应用的整个业务流程。

需要说明的是,本实施例中的SOA服务请求者的消息拦截器302和Web服务提供者侧的消息拦截器303可以作为Web服务引擎的扩展来实现透明的服务跟踪和信息收集机制。

同时本发明所提出的方法对于服务的提供者没有强制性要求。服务的提供者可以自愿的选择是否支持该方法。如果支持该方法,则该Web服务的请求者就可以获取该服务的具体执行过程。在整个Web服务执行过程中,如果某个参与的服务提供者不支持该方法,则仅有该服务及其调用的Web服务不会提供具体执行过程信息,而不会影响其他服务提供运行时详情。

以上,对用于SOA应用的Web服务信息管理系统进行了详细描述,下面描述利用该系统实现的在相同发明构思下提出的用于SOA应用的Web服务信息管理方法。图6示出了根据本发明一个实施例的用于SOA应用的Web服务信息管理方法的流程。

如图所示,该方法在步骤1处,执行SOA应用的SOA服务请求者通过Web服务存根向远程的Web服务发出服务请求消息,以便进行调用。

在步骤2,SOA服务请求者侧的消息拦截器302拦截该SOA服务请求者发出的服务请求消息,在其中添加包括上下文标识和操作标识的跟踪标头。并通过网络将该服务请求消息发送给Web服务的提供者。

在步骤3,Web服务提供者侧的消息拦截器303拦截该服务请求消息,获取其中的跟踪标头。

在步骤4,Web服务针对该服务请求消息进行操作,同时消息拦截器303在该Web服务执行期间跟踪其运行时详情,包括后续调用的Web服务的运行时详情。

在步骤5,Web服务提供者侧的消息拦截器303拦截Web服务执行结束后返回给SOA服务请求者的响应消息,并在其中添加包括所跟踪的运行时详情或其检索方法的确认跟踪标头,然后通过网络发送给该SOA服务请求者。

在步骤6,SOA服务请求者侧的消息拦截器302拦截该响应消息,获取其中的确认跟踪标头,并根据该确认跟踪标头获得该Web服务的运行时详情,同时发送给管理服务器以便进行相应的更新。然后,将该响应消息通过SOA服务请求者侧的服务存根传递给SOA应用。

此外,在利用本发明获得Web服务的运行时详情之后,可以将所有的信息记录到一个表中。并根据此表,将每一次服务调用的上下文标识作为节点标识,而使操作标识定义节点与子节点之间的调用关系,来创建Web服务运行时的拓扑图。这样,对于SOA应用的开发者或管理员来说,就可以掌握每一次Web服务调用的请求、响应消息以及相应的管理信息。这对于SOA应用的远程支持和问题诊断都是很有用的。图7中示出了前面所举的SOA应用的具体实例在应用了本发明的情况下执行的业务流程及其数据相关性分析。

以上,结合实施例对本发明的用于面向服务的体系结构应用的Web服务信息管理系统和方法进行了描述。应当指出,这些实施例只是示例性的,本领域的技术人员可以在此基础上作出各种改变。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号