專利名稱:一種企業(yè)服務(wù)總線與外部Web服務(wù)的交互方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種企業(yè)服務(wù)總線與外部Web服務(wù)的交互方法,使企業(yè)服務(wù)總 線內(nèi)部組件可以簡單高效地調(diào)用外部Web服務(wù)。
背景技術(shù):
企業(yè)服務(wù)總線作為應(yīng)用系統(tǒng)的連接中樞,是構(gòu)筑SOA(Service Oriented Architecture,面向服務(wù)架構(gòu))為基礎(chǔ)的企業(yè)信息系統(tǒng)的必要元素。企業(yè)服務(wù)總線 的定義可以簡單的理解為由中間件技術(shù)實現(xiàn)并支持SOA的一組基礎(chǔ)架構(gòu),支 持異構(gòu)環(huán)境中的服務(wù)、消息以及基于事件的交互,并且具有適當(dāng)?shù)姆?wù)級別和 可管理性。通過企業(yè)服務(wù)總線實現(xiàn)應(yīng)用系統(tǒng)的快速接入,并通過更高級的事件、 流程處理能力,能夠很好的將企業(yè)信息系統(tǒng)與實際業(yè)務(wù)協(xié)調(diào)起來,在保證原有 投資的條件下,實現(xiàn)更加靈活和敏捷的企業(yè)信息系統(tǒng)改造。
在網(wǎng)絡(luò)飛速發(fā)展的今天,每個組織都面臨著同樣一個挑戰(zhàn)在平衡核心能力 和已有應(yīng)用程序時創(chuàng)建同構(gòu)的環(huán)境。IT需要一個簡單的,與平臺無關(guān)的應(yīng)用程 序間通信方式。在這種需求下產(chǎn)生了 Web服務(wù),它是一類可以從Internet上獲 取的服務(wù)的總稱,它使用標(biāo)準(zhǔn)的XML消息接發(fā)系統(tǒng),并且不受任何操作系統(tǒng) 和編程語言的約束。在過去的幾年中,出現(xiàn)了三種作為全球標(biāo)準(zhǔn)的主要技術(shù) SOAP, WSDL和UDDI,它們構(gòu)成了 Web服務(wù)技術(shù)的核心。Web服務(wù)具有提 高業(yè)務(wù)適應(yīng)性、降低IT成本和提高商業(yè)智能的優(yōu)點。
由于各個公司對業(yè)務(wù)性能,逐漸從簡單的監(jiān)控轉(zhuǎn)到事前管理,他們需要看 到有關(guān)市場、客戶和競爭對手的實時的信息,這就使得企業(yè)服務(wù)總線內(nèi)部資源 與外部Web服務(wù)的交互變得極為重要。一般情況下,總線內(nèi)部組件是通過HTTP層訪問外部Web服務(wù)的,調(diào)用效率低。
發(fā)明內(nèi)容
為了解決上述問題,本發(fā)明提供了一種簡單高效的企業(yè)服務(wù)總線與外部 Web服務(wù)的交互方法。
一種企業(yè)服務(wù)總線與外部Web服務(wù)的交互方法,該方法通過代理組件對企 業(yè)服務(wù)總線內(nèi)部通信的消息格式和調(diào)用Web服務(wù)的消息格式進(jìn)行相互轉(zhuǎn)換。
進(jìn)一步的,所述方法為總線內(nèi)部消費者先把消息發(fā)送至代理組件,再由代 理組件把消息交換轉(zhuǎn)換成SOAP消息后發(fā)送至外部Web服務(wù)提供者。
當(dāng)企業(yè)服務(wù)總線容器和外部Web服務(wù)處于同一虛擬機(jī)中時,SOAP消息經(jīng)由 一個叫J2EE引擎的代理組件直接調(diào)用Web服務(wù)。
當(dāng)企業(yè)服務(wù)總線容器和外部Web服務(wù)處于不同虛擬機(jī)中時,內(nèi)部組件先把 請求消息發(fā)送至一個叫HTTP的代理組件,再由該組件構(gòu)造SOAP消息,并經(jīng)HTTP 層傳送到處于不同虛擬機(jī)中的Web服務(wù)。
更進(jìn)一步的,所述代理組件是企業(yè)服務(wù)總線內(nèi)部組件的一種,部署在企業(yè)服 務(wù)總線容器里,具有端點同步映射機(jī)制和消息轉(zhuǎn)換機(jī)制。 下面對本發(fā)明做進(jìn)一步描述
為了解決企業(yè)服務(wù)總線內(nèi)部通信的消息格式和調(diào)用Web服務(wù)的消息格式不 一致的問題,本發(fā)明設(shè)計了一種代理組件,它的主要功能是對上述兩種消息格 式進(jìn)行相互轉(zhuǎn)換。有了代理組件之后,總線內(nèi)部消費者并不直接調(diào)用外部Web 服務(wù),而是先把消息發(fā)送至代理組件,再由代理組件把消息交換轉(zhuǎn)換成SOAP 消息后發(fā)送至外部Web服務(wù)提供者。
企業(yè)服務(wù)總線內(nèi)部組件調(diào)用外部Web服務(wù)可分為以下兩種情況■當(dāng)企業(yè)服務(wù)總線容器和外部Web服務(wù)處于同一虛擬機(jī)中時,SOAP 消息的傳遞不需要通過HTTP層,而是經(jīng)由一個叫J2EE引擎的代理 組件直接調(diào)用Web服務(wù)。通過這種優(yōu)化策略,可以顯著提高調(diào)用外 部Web服務(wù)的效率。 ■當(dāng)企業(yè)服務(wù)總線容器和外部Web服務(wù)處于不同虛擬機(jī)中時,內(nèi)部組 件先把請求消息發(fā)送至一個叫HTTP的代理組件,再由該組件構(gòu)造 SOAP消息,并經(jīng)HTTP層傳送到處于不同虛擬機(jī)中的Web服務(wù)。 代理組件是企業(yè)服務(wù)總線內(nèi)部組件的一種,部署在企業(yè)服務(wù)總線容器里, 它主要是作為外部Web服務(wù)的內(nèi)部代理,使得內(nèi)部組件調(diào)用外部Web服務(wù)如 同調(diào)用內(nèi)部服務(wù)一樣簡便。 代理組件的功能可描述為-
■端點同步映射機(jī)制,啟動同步輪詢線程監(jiān)視外部Web服務(wù)狀況,創(chuàng) 建端點映射表,使得外部Web服務(wù)在企業(yè)服務(wù)總線內(nèi)部容器有相應(yīng) 的內(nèi)部端點代理。
■消息轉(zhuǎn)換機(jī)制,企業(yè)服務(wù)總線內(nèi)部通信使用的是標(biāo)準(zhǔn)的消息交換,而 調(diào)用Web服務(wù)必須發(fā)送SOAP消息,因此,代理組件必須能夠支持 兩種消息格式的互相轉(zhuǎn)換。 本發(fā)明的優(yōu)點在于
1、 當(dāng)企業(yè)服務(wù)總線容器和外部Web服務(wù)處于同一虛擬機(jī)中時,提供一 種繞過HTTP層簡單高效地調(diào)用Web服務(wù)的方法,根據(jù)測試,該方法比 傳統(tǒng)方法性能提高三倍多;
2、 外部Web服務(wù)對于內(nèi)部調(diào)用者來說是完全透明的,內(nèi)部調(diào)用者調(diào)用外部Web服務(wù)如同調(diào)用內(nèi)部服務(wù)一樣,這完全符合企業(yè)服務(wù)總線對于透 明性的要求;
3、提供安全、事務(wù)支持。
圖1企業(yè)服務(wù)總線內(nèi)部組件與外部Web服務(wù)的交換圖(處于同一虛擬機(jī)
中)
圖2企業(yè)服務(wù)總線內(nèi)部組件與外部Web服務(wù)的交換圖(處于不同虛擬機(jī)
中)
圖3企業(yè)服務(wù)總線內(nèi)部端點與Web服務(wù)端點的同步映射圖 圖4消息交換與SOAP消息的轉(zhuǎn)換圖
具體實施例方式
下面結(jié)合附圖和實例對本發(fā)明作詳細(xì)介紹
圖1描述了企業(yè)服務(wù)總線內(nèi)部消費者組件調(diào)用處于同一虛擬機(jī)的外部Web
服務(wù)的過程,步驟如下
1) 當(dāng)消費者組件要調(diào)用處于同一虛擬機(jī)的外部Web服務(wù)時,構(gòu)造消息交 換,在消息中設(shè)定內(nèi)部端點,并發(fā)送該消息至J2EE引擎。
2) J2EE引擎接收到消息交換之后,在端點映射列表中査找與接收到的內(nèi)部 端點相對應(yīng)的Web服務(wù)端點,然后根據(jù)該Web服務(wù)端點和消息交換中 的規(guī)范化消息分別構(gòu)造SOAP消息頭和消息體,并將該SOAP消息直接 發(fā)送至處于同一虛擬機(jī)的Web服務(wù)提供者。
3) Web服務(wù)提供者解析接收到的SOAP消息,執(zhí)行相應(yīng)的服務(wù),如果有消 息返回或出現(xiàn)Web服務(wù)調(diào)用異常,回復(fù)消息會沿著發(fā)送路徑逐層返回至調(diào)用者。
圖2描述了企業(yè)服務(wù)總線內(nèi)部消費者組件調(diào)用處于不同虛擬機(jī)的外部Web 服務(wù)的過程,步驟如下
1) 當(dāng)消費者組件要調(diào)用處于不同虛擬機(jī)的外部Web服務(wù)時,消費者組件構(gòu) 造規(guī)范化消息,設(shè)定內(nèi)部端點,并將消息發(fā)送至HTTP組件。
2) HTTP組件接收到消息交換之后,在端點映射列表中查找與接收到的內(nèi) 部端點相對應(yīng)的Web服務(wù)端點,然后根據(jù)該Web服務(wù)端點和消息交換 中的規(guī)范化消息分別構(gòu)造SOAP消息頭和消息體,并將該消息發(fā)送至 Internet 。
3) Internet將SOAP消息轉(zhuǎn)發(fā)至處于不同虛擬機(jī)的Web服務(wù)提供者,執(zhí)行 相應(yīng)的服務(wù),如果有消息返回或出現(xiàn)Web服務(wù)調(diào)用異常,回復(fù)消息會沿 著發(fā)送路徑經(jīng)HTTP層返回至調(diào)用者。
圖3描述了企業(yè)服務(wù)總線內(nèi)部端點與Web服務(wù)端點的同步映射過程,步驟 如下-
1) 當(dāng)代理組件啟動時,同時啟動同步輪詢線程,掃描Web服務(wù)容器上Web 服務(wù)列表,注冊與Web服務(wù)端點一一對應(yīng)的總線內(nèi)部服務(wù)。
2) 代理組件啟動后,會開線程監(jiān)聽Web服務(wù)容器上的服務(wù),當(dāng)有新的Web 服務(wù)部署后,注冊相應(yīng)的總線內(nèi)部服務(wù)端點;同樣地,當(dāng)原有的Web服 務(wù)被鈍化后,注銷與該Web服務(wù)對應(yīng)的內(nèi)部服務(wù)端點,保持端點映射表 中的一致性。
3) 當(dāng)代理組件停止后,總線容器注銷所有的與外部Web服務(wù)相關(guān)的內(nèi)部端 點,使端點映射表為空。圖4描述了消息交換和SOAP消息相互轉(zhuǎn)換關(guān)系
1) 消息交換中的服務(wù)端點、提供者ID、消費者ID與SOAP消息頭相對應(yīng)。 ■服務(wù)提供者端點結(jié)構(gòu)為命名空間+服務(wù)提供者名稱+服務(wù)提供者端點
則相應(yīng)的SOAP消息頭為
<Header>
<To mustUnderstand=,,true,,>
"命名空間\服務(wù)提供者名稱\服務(wù)提供者端點" </To〉 </Header>
■服務(wù)消費者端點結(jié)構(gòu)為命名空間+服務(wù)消費者名稱+服務(wù)消費者端點
則相應(yīng)的SOAP消息頭為-
<From mustUnderstand="true">
"命名空間\服務(wù)消費者名稱\服務(wù)消費者端點" </From> </Header>
2) 消息交換中的規(guī)范化消息與SOAP消息體相對應(yīng)。 SOAP消息體結(jié)構(gòu)為<Body>
〈Element 1 >元素1內(nèi)容〈/Element 1 >
<Element N >元素N內(nèi)容〈/Element N > </ Body 〉
權(quán)利要求
1.一種企業(yè)服務(wù)總線與外部Web服務(wù)的交互方法,其特征在于該方法通過代理組件對企業(yè)服務(wù)總線內(nèi)部通信的消息格式和調(diào)用Web服務(wù)的消息格式進(jìn)行相互轉(zhuǎn)換。
2. 根據(jù)權(quán)利要求l所述的一種企業(yè)服務(wù)總線與外部Web服務(wù)的交互方法,其特 征在于所述方法為總線內(nèi)部消費者先把消息發(fā)送至代理組件,再由代理組件 把消息交換轉(zhuǎn)換成SOAP消息后發(fā)送至外部Web服務(wù)提供者。
3. 根據(jù)權(quán)利要求1或2所述的一種企業(yè)服務(wù)總線與外部Web服務(wù)的交互方法, 其特征在于當(dāng)企業(yè)服務(wù)總線容器和外部Web服務(wù)處于同一虛擬機(jī)中時,SOAP 消息經(jīng)由一個叫J2EE引擎的代理組件直接調(diào)用Web服務(wù)。
4. 根據(jù)權(quán)利要求1或2所述的一種企業(yè)服務(wù)總線與外部Web服務(wù)的交互方法, 其特征在于當(dāng)企業(yè)服務(wù)總線容器和外部Web服務(wù)處于不同虛擬機(jī)中時,內(nèi)部 組件先把請求消息發(fā)送至一個叫HTTP的代理組件,再由該組件構(gòu)造SOAP消息, 并經(jīng)HTTP層傳送到處于不同虛擬機(jī)中的Web服務(wù)。
5. 根據(jù)權(quán)利要求1或2所述的一種企業(yè)服務(wù)總線與外部Web服務(wù)的交互方法, 其特征在于所述代理組件是企業(yè)服務(wù)總線內(nèi)部組件的一種,部署在企業(yè)服務(wù) 總線容器里,具有端點同步映射機(jī)制和消息轉(zhuǎn)換機(jī)制。
全文摘要
本發(fā)明涉及一種企業(yè)服務(wù)總線與外部Web服務(wù)的交互方法,使企業(yè)服務(wù)總線內(nèi)部組件可以簡單高效地調(diào)用外部Web服務(wù)。一種企業(yè)服務(wù)總線與外部Web服務(wù)的交互方法,該方法通過代理組件對企業(yè)服務(wù)總線內(nèi)部通信的消息格式和調(diào)用Web服務(wù)的消息格式進(jìn)行相互轉(zhuǎn)換。本發(fā)明的優(yōu)點在于當(dāng)企業(yè)服務(wù)總線容器和外部Web服務(wù)處于同一虛擬機(jī)中時,提供一種繞過HTTP層簡單高效地調(diào)用Web服務(wù)的方法,根據(jù)測試,該方法比傳統(tǒng)方法性能提高三倍多;外部Web服務(wù)對于內(nèi)部調(diào)用者來說是完全透明的,內(nèi)部調(diào)用者調(diào)用外部Web服務(wù)如同調(diào)用內(nèi)部服務(wù)一樣,這完全符合企業(yè)服務(wù)總線對于透明性的要求;提供安全、事務(wù)支持。
文檔編號H04L29/06GK101621516SQ200910100968
公開日2010年1月6日 申請日期2009年8月10日 優(yōu)先權(quán)日2009年8月10日
發(fā)明者健 吳, 吳朝暉, 尹建偉, 朱顯杰, 瑩 李, 鄧水光, 陳韓偉 申請人:浙江大學(xué)