監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價咨詢管理系統(tǒng) | 工程設(shè)計管理系統(tǒng) | 簽約案例 | 購買價格 | 在線試用 | 手機(jī)APP | 產(chǎn)品資料
X 關(guān)閉

實(shí)現(xiàn)隱式和顯式SOAP消息頭

申請免費(fèi)試用、咨詢電話:400-8352-114

來源:泛普軟件 實(shí)現(xiàn)隱式和顯式SOAP消息頭(一)

用戶可以使用通常稱為顯式和隱式消息頭在 WSDL 定義中定義 SOAP 消息頭。本文學(xué)習(xí)這兩種樣式之間的區(qū)別以及在使用 JAX-RPC 進(jìn)行開發(fā)時這些區(qū)別是如何影響您的。

SOAP 規(guī)范描述了 SOAP 信封可以包括一個可選的消息頭部分。該消息頭用來傳輸并不屬于實(shí)際消息的有效載荷部分的數(shù)據(jù)。WSDL 規(guī)范定義了如何將 SOAP 消息頭數(shù)據(jù)聲明為 Web 服務(wù)定義的一部分。在 WSDL 定義中有兩種定義 SOAP 消息頭的方式:顯式和隱式消息頭 。

SOAP 消息頭的樣式

SOAP 消息頭的典型應(yīng)用是用來傳送上下文的數(shù)據(jù)。例如,如果消息中包括數(shù)字簽名,那么此簽名將最有可能在 SOAP 消息頭中傳送。另一個例子是用于 Web服務(wù),這些服務(wù)支持與客戶端之間進(jìn)行某些形式的會話。一旦建立了這樣的會話,它們就要應(yīng)該將特定的標(biāo)識符與每個請求一起發(fā)送。 WS-AtomicTransaction 規(guī)范(參閱 參考文獻(xiàn)) 同時還描述了一種非常類似的機(jī)制, 這種機(jī)制用于在多個Web 服務(wù)之間運(yùn)行交互的協(xié)調(diào)性序列。

WSDL 規(guī)范提供了兩種不同的識別 SOAP 消息頭字段用法的方法。在顯式消息頭中,用戶將消息頭的所有信息添加給服務(wù)的 portType 了。它作為附加的參數(shù)顯示給客戶端。這種樣式的優(yōu)點(diǎn)在于客戶端能夠直接將所有的信息傳送給該服務(wù)。其不足之處就是它經(jīng)常將服務(wù)的外部接口和與它的業(yè)務(wù)意圖毫不相干的信息群集在一起。

下面是使用隱式消息頭的好處:消息頭信息并不是 portType 的一部分,因此不會影響服務(wù)的功能性接口。另一方面,隱式消息頭很難作為標(biāo)題以編程的方式處理。

在更加深入了解有關(guān)編程方面的詳細(xì)信息之前, 我們來看一看這些不同的樣式是如何定義的。

WSDL 中 SOAP 消息頭的綁定類型

描述 SOAP 頭不同演示的最簡單方式就是從實(shí)例開始講述。下面清單 1 中的 WSDL 摘錄是摘自以前的解釋 SOAP 消息頭用法的一篇文章:

清單 1. WSDL 中 SOAP 消息頭的綁定 http://soapheader.ibm.com" ...>

...

type="intf:StockService">

"http://schemas.xmlsoap.org/soap/http"/>

part=

"request_header" use="literal"/>

...

您能夠看到在 WSDL 文件的綁定部分中特別的位置上使用了一個名為的元素。它包含在 元素中,該元素告訴用戶在該處存在 SOAP 消息頭片斷,可作為操作的部分請求消息。 元素的內(nèi)容能夠識別在消息頭中傳送的消息部分。

這樣做顯得非常簡潔易懂,但這是顯式消息頭還是隱式消息頭?顯然,從上面的摘錄來看,不能準(zhǔn)確區(qū)分。它其實(shí)可以是兩種方式的任意一種,這是因?yàn)椋合㈩^綁定定義了消息 intf:getLastSellPriceRequest 中名為 request_header 的部分,而它又是 SOAP 信封的消息頭部分。這種消息頭樣式依賴于此消息部分是否被用于 Web 服務(wù)的 portType 中。讓我們詳細(xì)地研究一下這兩種情況。

顯式消息頭

如果消息頭是服務(wù) 的一部分,那么就可以調(diào)用消息頭定義顯式。換句話說,名為 request_header 的消息部分必需在 portType 中使用,如 清單 2 所示。

清單 2. WSDL 中的顯式 SOAP 消息頭

name="parameters"/>

"getLastSellPriceRequest"/>

"getLastSellPriceResponse"/>

請注意名為 getLastSellPriceRequest 的消息包括兩部分。一部分加入到SOAP 請求消息的消息體部分,另一部分加入到消息頭中。清單 3 顯示了 WSDL 文件的相關(guān)部分,WSDL 文件顯示了這兩個部分:

清單 3. WSDL - SOAP 綁定中的顯式 SOAP 頭

"request_header" use="literal"/>

元素定義了 Web 服務(wù)的外部接口。它定義了哪些數(shù)據(jù)要作為請求消息的一部分發(fā)送。如果這些請求數(shù)據(jù)在該請求消息的 SOAP 消息頭部分中傳送,那么用戶就可以調(diào)用這個顯式消息頭。該操作同樣分別適用于部分(或者全部)的響應(yīng)消息被定義為頭元素的情況。

發(fā)布:2007-04-23 11:37    編輯:泛普軟件 · xiaona    [打印此頁]    [關(guān)閉]
相關(guān)文章:
南京OA系統(tǒng)
聯(lián)系方式

成都公司:成都市成華區(qū)建設(shè)南路160號1層9號

重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓

咨詢:400-8352-114

加微信,免費(fèi)獲取試用系統(tǒng)

QQ在線咨詢

泛普南京OA快博其他應(yīng)用

南京OA軟件 南京OA新聞動態(tài) 南京OA信息化 南京OA快博 南京OA行業(yè)資訊 南京軟件開發(fā)公司 南京門禁系統(tǒng) 南京物業(yè)管理軟件 南京倉庫管理軟件 南京餐飲管理軟件 南京網(wǎng)站建設(shè)公司