專利名稱:基于分層結構的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日
發明者馬殿富, 劉建, 李武, 朱巖, 葛聲, 劉旭東 申請人:北京航空航天大學