基于分层结构的Web服务处理系统及方法

文档序号:7626183阅读:194来源:国知局
专利名称:基于分层结构的Web服务处理系统及方法
技术领域
本发明涉及一种基于分层结构的Web服务处理系统及方法。
背景技术
Web服务是使应用程序之间,可以运用与平台无关、与编程语言无关的方式进行相互通信的一项技术。它使用XML定义描述了其对外公开的接口和绑定,任何应用程序软件系统都能够通过Web服务的定义所规定的方式与其进行交互,交互中使用Internet协议传送基于XML的消息。
Web服务是在Internet上描述、查找和调用应用接口的一种方式。Web服务技术由简单对象访问协议SOAP、服务描述协议WSDL、服务注册和查找协议UDDI组成。Web服务为应用程序之间的交互提供了一种标准的“接口”方式。
在Web服务描述文件中,定义了八种消息交换模式,即仅输入的消息交换模式、强制输入的消息交换模式、输入-输出的消息交换模式、输入-可选输出的消息交换模式、仅输出的消息交换模式、强制输出的消息交换模式、输出-输入的消息交换模式、输出-可选输入的消息交换模式。
现有的Web服务处理系统仅能够处理输入-输出类型的消息交换模式。例如Apache Axis,IBM Websphere。

发明内容
鉴于上述原因,为了解决现有技术中Web服务处理系统的弊端,本发明的主要目的是提供一种基于分层结构的、能够很好地支持上述八种消息交换模式要求的Web服务处理系统及方法。
为实现上述目的,本发明采用以下技术方案一种基于分层结构的Web服务处理系统,其特征在于它由传输层、消息层、服务层和适配层构成,各层之间通过对象池隔离和连接;所述对象池用于在线程处理过程中缓存对象,它设有接口,对象派发线程通过对象池接口从对象池中获取对象;对象处理线程通过对象池接口往对象池中存对象;所述传输层为最底层,处理各种传输层协议,生成传输上下文;它配置有多种传输层协议,且每种传输层协议都存在一个输入对象派发线程,传输层的输入对象派发线程没有输入对象池,直接通过网络倾听客户端的连接;所有传输层协议共享一个输出对象派发线程,传输层的输出对象派发线程没有输出对象池,直接通过网络将响应输出到客户端;所述消息层位于传输层和服务层之间,根据各种消息层协议,生成消息上下文;消息层存在一个输入派发线程和一个输出派发线程;所述服务层位于消息层和适配层之间,根据WSDL协议,生成服务对象;服务层存在一个输入派发线程和一个输出派发线程;所述适配层为最顶层,根据WSDD协议,调用具体的服务,处理服务对象;适配层存在一个对象派发线程。
一种Web服务处理方法,该方法基于分层结构的Web服务处理系统,采用分层处理的方式处理客户端的请求,其特征在于它包括以下步骤A、Web服务处理系统通过传输层具体的传输协议的输入对象派发线程倾听客户端的请求,并对传输层接收到的客户端请求报文进行处理,生成传输上下文;B、消息层根据传输上下文类型,选择具体的消息协议处理此传输上下文,生成消息上下文;C、服务层根据WSDL协议,处理消息上下文,生成服务对象;D、适配层根据WSDD协议对服务对象进行处理;E、服务层根据WSDL协议,从处理后的服务对象中获取消息上下文;并将所获取的消息上下文放入消息上下文输出对象池;F、消息层根据传输上下文类型,选择具体的消息协议处理此消息上下文,从消息上下文中获取响应传输上下文;并将所获取的传输上下文放入传输上下文输出对象池;G、传输层根据响应传输上下文类型中对对象处理线程的引用,选择具体的对象处理线程处理此响应传输上下文,将响应发送给客户端。


图1为本发明基于分层结构的Web服务处理系统的结构示意2为本发明针对输入-输出消息交换模式的Web服务处理方法的程序流程图具体实施方式
如图1所示,本发明公开的基于分层结构的Web服务处理系统分为四层传输层、消息层、服务层和适配层,各层间通过对象池隔离和连接。
所述对象池用于在线程处理过程中缓存对象,对象池设有接口,一般说来,对象派发线程通过对象池接口从对象池中取对象,对象处理线程通过对象池接口往对象池中存对象。对象池是成对存在的,分别为输入对象池和输出对象池。
按对象池中缓存的对象分类,本发明基于分层结构的Web服务处理系统存在三类对象需要缓存,分别为传输上下文、消息上下文和服务对象,因此,本发明基于分层结构的Web服务处理系统存在三种类型的对象池,分别为传输上下文对象池、消息上下文对象池和服务对象对象池。
由上可知,系统中存在六个对象池,分别为传输上下文输入对象池,传输上下文输出对象池,消息上下文输入对象池,消息上下文输出对象池,服务对象输入对象池,服务对象输出对象池;其中,传输上下文输入对象池和传输上下文输出对象池位于系统的传输层和消息层之间,消息上下文输入对象池和消息上下文输出对象池位于系统消息层和服务层之间,服务对象输入对象池和服务对象输出对象池位于系统服务层和适配层之间。
所述传输层用于连接传输上下文对象池,主要处理各种传输层协议。本发明Web服务处理系统能够配置多种传输协议如HTTP协议、HTTPS协议、SMTP协议等,且每种协议都能够处理请求和响应。
每种传输层协议都存在一个输入对象派发线程,传输层的输入对象派发线程没有输入对象池,直接通过网络倾听客户端的连接;所有传输层协议共享一个输出对象派发线程,传输层的输出对象派发线程没有输出对象池,直接通过网络将响应输出到客户端。
传输层输入对象派发线程倾听基于此类传输层协议的请求,并创建请求处理线程处理此连接请求。如果传输层输入对象派发线程倾听的是HTTP请求,则创建HTTP请求处理线程;如果传输层输入对象派发线程倾听的是SMTP请求,则创建SMTP请求处理线程。
请求处理线程根据相应的传输层协议解析请求报文,并生成相应的传输上下文,最后,将生成的传输层上下文放入传输上下文输入对象池。
传输层输出对象派发线程从传输上下文输出对象池中取出传输上下文,并从此传输上下文中获取相对应的处理线程,通过处理线程的处理将响应发送到客户端。
所述消息层用于连接传输上下文对象池和消息上下文对象池,主要处理各种消息层协议。本发明Web服务处理系统能够配置多种消息协议,如SOAP协议等。
消息层存在一个输入派发线程和一个输出派发线程。
消息层输入派发线程从传输上下文输入对象池中取传输上下文,并创建相对应的传输上下文对象处理线程处理此传输上下文。
消息层输出派发线程从消息上下文输出对象池中取消息上下文,并创建相对应的消息上下文对象处理线程处理此传输上下文。
每种消息协议至少都存在传输上下文对象处理线程和消息上下文对象处理线程处理传输上下文和消息上下文。
传输上下文对象处理线程根据消息协议解析传输上下文创建相对应的消息上下文,并将创建的消息上下文放入消息上下文输入对象池。
消息上下文对象处理线程对消息上下文进行处理,并以此获取传输上下文,并将传输上下放入传输上下文输出对象池。
所述服务层用于连接消息上下文对象池和服务对象对象池,主要处理服务协议。服务可以通过多种服务描述语言来描述,WSDL协议(Web服务描述语言协议)仅是服务层支持的一种协议。
服务层存在一个输入派发线程和一个输出派发线程。
服务层输入派发线程从消息上下文输入对象池中取消息上下文,并创建相应的消息上下文对象处理线程处理此消息上下文。
服务层输出派发线程从服务对象输出对象池中取服务对象,并创建相应的服务对象处理线程处理此服务对象。
如果服务描述是基于WSDL的,则系统将按照WSDL协议规定的处理方式创建处理线程来进行处理。WSDL协议中存在消息上下文对象处理线程和服务对象对象处理线程。
消息上下文对象处理线程根据WSDL协议解析消息上下文,创建服务对象,并将创建的服务对象放入服务对象输入对象池。
服务对象处理线程根据服务对象,获取相对应的消息上下文,并将此消息上下文放入消息上下文输出对象池。
所述适配层主要用于连接服务对象池,主要用于调用具体的服务(服务适配过程)。服务适配层主要处理各种服务部署协议,如WSDD协议。WSDD协议(Web服务部署描述协议)仅是适配层支持的一种协议。
适配层存在一个对象派发线程。
适配层对象派发线程从服务对象输入对象池中取服务对象,并创建相应的对象处理线程处理此服务对象。
服务对象处理线程通过对服务对象进行适配,调用具体的服务,并将处理后的服务对象放入服务对象输出对象池。
基于上述分层结构,Web服务处理系统对Web服务调用的处理由多层和多个对象池配合完成。
本发明公开的Web服务处理方法基于分层结构的Web服务处理系统,采用分层处理的方式处理客户端的请求,具体方法如图2所示1、Web服务处理系统通过传输层具体的传输协议的输入对象派发线程倾听客户端的请求,并对传输层接收到的客户端请求报文进行处理,生成传输上下文;具体步骤(1)、获取套接字输入流;(2)、获取传输协议报文头;(3)、根据传输协议解析接收到的客户端请求报文,生成传输上下文,通过输入流设置传输上下文的请求上下文,通过输出流设置传输上下文的响应上下文,设置响应时候的对象处理线程,设置请求的路径;(4)、将生成的传输上下文放入传输上下文输入对象池;2、消息层根据传输上下文类型,选择具体的消息协议处理此传输上下文,生成消息上下文;具体步骤(1)、获取传输上下文的路径,通过路径获取Web服务名称,设置消息上下文的Web服务名称;(2)、获取传输上下文的请求传输上下文的服务集,设置消息上下文的请求服务集;(3)、获取传输上下文的请求传输上下文的附件集,设置消息上下文的请求附件集;(4)、获取传输上下文的响应传输上下文,设置消息上下文的响应传输上下文;(5)、将生成的消息上下文放入消息上下文输入对象池;3、服务层根据WSDL协议,处理消息上下文,生成服务对象;具体步骤(1)、根据消息上下文的Web服务名称,从服务上下文池中取服务上下文,服务上下文是Web服务描述文件和Web服务部署文件的对象表示;(2)、创建服务对象,设置服务对象的服务上下文,消息上下文和服务方法。
(3)、将生成的服务对象放入服务对象输入对象池;4、适配层根据WSDD协议对服务对象进行处理;具体步骤(1)、对服务对象中的消息上下文做处理器(Handler)先处理;(2)、通过服务上下文获取适配器,对服务对象进行处理;(3)、对服务对象中的消息上下文做处理器的后处理;(4)、将处理完后的服务对象放入服务对象输出对象池;
5、服务层根据WSDL协议,从处理后的服务对象中获取消息上下文;并将所获取的消息上下文放入消息上下文输出对象池;6、消息层根据传输上下文类型,选择具体的消息协议处理此消息上下文,从消息上下文中获取响应传输上下文;并将所获取的传输上下文放入传输上下文输出对象池;7、传输层根据响应传输上下文类型中对对象处理线程的引用,选择具体的对象处理线程处理此响应传输上下文,将响应发送给客户端,具体步骤(1)、通过响应上下文获取输出流;(2)、通过响应上下文获取响应的服务集及附件集(3)、计算响应的报文长度(4)、将服务集及附件集写入输出流(5)、将输出流发送给客户端(6)、关闭输出流。
至此,一次完整的基于输入—输出消息交换模式的Web服务调用过程就完成了。
对于基于仅输入消息交换模式的Web服务调用,其Web服务处理方法只包括第1~第5步,系统在对服务对象处理完毕后,返回空值,系统不再进行后续处理。
对于基于强制输入的消息交换模式,其处理方法同基于仅输入消息交换模式类似,唯一的不同是其强制输入由可靠消息协议进行保证。
对于基于输入-可选输出的消息交换模式,其步骤与基于输入-输出消息交换模式基本类似,唯一不同的是在第4步,如果系统处理服务对象时返回为空,则不执行第5~第7步。
对于基于仅输出的消息交换模式,其Web服务处理方法包括第5~第7步,Web服务将创建的服务对象放入服务对象输出对象池中,则Web服务系统将通过后续处理,将响应内容发送到客户端。
对于基于强制输出的消息交换模式,其步骤与基于仅输出的消息交换模式类似,唯一的不同是其强制输出由可靠消息协议进行保证。
对于基于输出-输入的消息交换模式,其Web服务处理方法由上述描述步骤的第4步第3小步开始,至第7步,然后转第1步~第4步第2小步。
对于基于输出-可选输入的消息交换模式,其步骤同基于输出-输入的消息交换模式类似,仅仅是到第7步后,如果没有输入的话,将不执行第1步~第4步第2小步。
在本发明基于分层的Web服务处理方法中,传输层保证所有抵达消息层的传输上下文都是正确的,消息层保证所有抵达服务层的消息上下文都是正确的,服务层保证所有抵达适配层的服务对象都是正确的。
传输层在处理对象时如果出现错误,则直接将错误信息放入传输上下文输出对象池中,由传输层输出对象派发线程进行处理。
消息层在处理对象时如果出现错误,则直接将错误信息放入传输上下文输出对象池中,由传输层输出对象派发线程进行处理。
服务层在处理对象时如果出现错误,则直接将错误信息放入消息上下文输出对象池中,由消息层输出对象派发线程进行处理。
适配层在处理对象时如果出现错误,则直接将错误信息放入服务对象输出对象池中,由服务层输出对象派发线程进行处理。
本基于分层结构的Web服务处理方法与现有技术中的Web服务处理方法相比,优点在于能够更全面更有效的支持WSDL定义的八种交换模式,其次,此Web服务处理方法各层次间更加清晰。
权利要求
1.一种基于分层结构的Web服务处理系统,其特征在于它由传输层、消息层、服务层和适配层构成,各层之间通过对象池隔离和连接;所述对象池用于在线程处理过程中缓存对象,它设有接口,对象派发线程通过对象池接口从对象池中获取对象;对象处理线程通过对象池接口往对象池中存对象;所述传输层为最底层,处理各种传输层协议,生成传输上下文;它配置有多种传输层协议,且每种传输层协议都存在一个输入对象派发线程,传输层的输入对象派发线程没有输入对象池,直接通过网络倾听客户端的连接;所有传输层协议共享一个输出对象派发线程,传输层的输出对象派发线程没有输出对象池,直接通过网络将响应输出到客户端;所述消息层位于传输层和服务层之间,根据各种消息层协议,生成消息上下文;消息层存在一个输入派发线程和一个输出派发线程;所述服务层位于消息层和适配层之间,根据WSDL协议,生成服务对象;服务层存在一个输入派发线程和一个输出派发线程;所述适配层为最顶层,根据WSDD协议,调用具体的服务,处理服务对象;适配层存在一个对象派发线程。
2.根据权利要求1所述的基于分层结构的Web服务处理系统,其特征在于所述对象池成对存在,分为输入对象池和输出对象池;所述对象池分为传输上下文输入对象池,传输上下文输出对象池,消息上下文输入对象池,消息上下文输出对象池,服务对象输入对象池和服务对象输出对象池;所述传输上下文输入对象池和传输上下文输出对象池位于传输层和消息层之间,消息上下文输入对象池和消息上下文输出对象池位于消息层和服务层之间,服务对象输入对象池和服务对象输出对象池位于服务层和适配层之间。
3.根据权利要求2所述的基于分层结构的Web服务处理系统,其特征在于所述传输层输入对象派发线程倾听基于传输层协议的请求,创建请求处理线程处理此连接请求;请求处理线程根据相应的传输层协议解析请求的报文,生成相应的传输上下文,并将生成的传输层上下文放入传输上下文输入对象池中;传输层输出对象派发线程从传输上下文输出对象池中取出传输上下文,并从此传输上下文中获取相对应的处理线程,通过处理线程的处理将响应发送到客户端。
4.根据权利要求3所述的基于分层结构的Web服务处理系统,其特征在于所述消息层输入派发线程从传输上下文输入对象池中取出传输上下文,创建传输上下文对象处理线程处理此传输上下文;传输上下文对象处理线程根据消息协议解析传输上下文创建消息上下文,并将创建的消息上下文放入消息上下文输入对象池中;消息层输出派发线程从消息上下文输出对象池中取出消息上下文,创建消息上下文对象处理线程处理此传输上下文;消息上下文对象处理线程对消息上下文进行处理,并以此获取传输上下文,并将传输上下放入传输上下文输出对象池中。
5.根据权利要求4所述的基于分层结构的Web服务处理系统,其特征在于所述服务层输入派发线程从消息上下文输入对象池中取出消息上下文,并创建相应的消息上下文对象处理线程处理此消息上下文;消息上下文对象处理线程根据WSDL协议解析消息上下文,创建服务对象,并将创建的服务对象放入服务对象输入对象池中;服务层输出派发线程从服务对象输出对象池中取出服务对象,并创建相应的服务对象处理线程处理此服务对象;服务对象处理线程根据服务对象,获取相对应的消息上下文,并将此消息上下文放入消息上下文输出对象池中。
6.根据权利要求5所述的基于分层结构的Web服务处理系统,其特征在于所述适配层对象派发线程从服务对象输入对象池中取出服务对象,创建相应的对象处理线程处理此服务对象;服务对象处理线程通过对服务对象进行适配,调用具体的服务,并将处理后的服务对象放入服务对象输出对象池中。
7.一种Web服务处理方法,该方法基于分层结构的Web服务处理系统,采用分层处理的方式处理客户端的请求,其特征在于它包括以下步骤A、Web服务处理系统通过传输层具体的传输协议的输入对象派发线程倾听客户端的请求,并对传输层接收到的客户端请求报文进行处理,生成传输上下文;B、消息层根据传输上下文类型,选择具体的消息协议处理此传输上下文,生成消息上下文;C、服务层根据WSDL协议,处理消息上下文,生成服务对象;D、适配层根据WSDD协议对服务对象进行处理;E、服务层根据WSDL协议,从处理后的服务对象中获取消息上下文;并将所获取的消息上下文放入消息上下文输出对象池;F、消息层根据传输上下文类型,选择具体的消息协议处理此消息上下文,从消息上下文中获取响应传输上下文;并将所获取的传输上下文放入传输上下文输出对象池;G、传输层根据响应传输上下文类型中对对象处理线程的引用,选择具体的对象处理线程处理此响应传输上下文,将响应发送给客户端。
8.根据权利要求7所述的Web服务处理方法,其特征在于所述步骤A具体包括以下步骤(1)、获取套接字输入流;(2)、获取传输协议报文头;(3)、根据传输协议解析接收到的客户端请求报文,生成传输上下文,通过输入流设置传输上下文的请求上下文,通过输出流设置传输上下文的响应上下文,设置响应时候的对象处理线程,设置请求的路径;(4)、将生成的传输上下文放入传输上下文输入对象池。
9.根据权利要求7所述的Web服务处理方法,其特征在于所述步骤B具体包括以下步骤(1)、获取传输上下文的路径,通过路径获取Web服务名称,设置消息上下文的Web服务名称;(2)、获取传输上下文的请求传输上下文的服务集,设置消息上下文的请求服务集;(3)、获取传输上下文的请求传输上下文的附件集,设置消息上下文的请求附件集;(4)、获取传输上下文的响应传输上下文,设置消息上下文的响应传输上下文;(5)、将生成的消息上下文放入消息上下文输入对象池。
10.根据权利要求7所述的Web服务处理方法,其特征在于所述步骤C具体包括以下步骤(1)、根据消息上下文的Web服务名称,从服务上下文池中取服务上下文,服务上下文是Web服务描述文件和Web服务部署文件的对象表示;(2)、创建服务对象,设置服务对象的服务上下文,消息上下文和服务方法;(3)、将生成的服务对象放入服务对象输入对象池。
11.根据权利要求7所述的Web服务处理方法,其特征在于所述步骤D具体包括以下步骤(1)、对服务对象中的消息上下文做处理器先处理;(2)、通过服务上下文获取适配器,对服务对象进行处理;(3)、对服务对象中的消息上下文做处理器的后处理;(4)、将处理完后的服务对象放入服务对象输出对象池。
12.根据权利要求7所述的Web服务处理方法,其特征在于所述步骤G具体包括以下步骤(1)、通过响应上下文获取输出流;(2)、通过响应上下文获取响应的服务集及附件集(3)、计算响应的报文长度(4)、将服务集及附件集写入输出流(5)、将输出流发送给客户端(6)、关闭输出流。
全文摘要
本发明公开了一种基于分层结构的Web服务处理系统,它由传输层、消息层、服务层和适配层构成,各层之间通过对象池隔离和连接。所述对象池用于在线程处理过程中缓存对象,它设有接口,对象派发线程通过对象池接口从对象池中获取对象。所述传输层为最底层,主要处理各种传输层协议,生成传输上下文。所述消息层位于传输层和服务层之间,主要处理各种消息层协议,生成消息上下文。所述服务层位于消息层和适配层之间,主要处理WSDL协议,生成服务对象。所述适配层为最顶层,主要是处理WSDD协议,处理具体的服务对象。此外,本发明公开的Web服务处理方法采用分层处理的方式处理Web服务,通过对象池来连接各层,通过定义各层的处理方式,实现了Web服务描述语言中的多种消息交换模式。
文档编号H04L29/06GK1956446SQ20051011478
公开日2007年5月2日 申请日期2005年10月27日 优先权日2005年10月27日
发明者马殿富, 刘建, 李武, 朱岩, 葛声, 刘旭东 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1