2013-07-25 22 views
3

您能解釋一下SOAPHandler接口應該做什麼的方法getHeaders應該做什麼?來自SoapHandler接口的getHeaders方法

http://docs.oracle.com/javaee/5/api/javax/xml/ws/handler/soap/SOAPHandler.html#getHeaders%28%29

我不知道,如果它產生額外的頭,或者如果它應該只是告訴其標頭中的信息應該具有的運行時間。

我一直在搜索互聯網尋找詳細的信息,但我找不到任何。我覺得是如此的基礎和明顯,沒有文檔需要LOL :-)

感謝

回答

5

您正在尋找的描述可以在標題爲「10.2.1 SOAP mustUnderstand Processing」的章節的JAX-WS 2.2規範中找到。入站消息需要在正常處理程序處理開始之前發生的額外處理步驟。基本上,從getHeaders返回的QName實例的集合允許處理程序貢獻節點可以理解的全套SOAP頭文件(規範中記錄了整套的其他貢獻者)。如果入站SOAP標頭包含值爲1truemustUnderstand屬性,則如果該標頭無法標記爲理解,則會生成異常。

-2

編輯:顯然我錯了,再閱讀後,我必須同意,所以請忽略這一點。

SOAP消息是一個HTTP請求。作爲消息的一部分,HTTP請求可以包含多個不同的頭文件(例如,在SOAP 1.1中,有一個名爲SOAPAction的頭文件,其中可能包含服務和操作的名稱)。 getHeaders函數返回請求附帶的所有頭文件QNames的列表,所以在前面的例子中,您將得到一個包含值爲「SOAPAction」的元素的列表。

+0

但是由於請求來自外部代理並且getHeaders方法由我實現,所以我怎樣才能知道請求附帶的QName的完整列表?爲什麼我需要實施它?我不明白爲什麼它存在的原因。 – user1558688

+0

另一個問題:客戶端soaphandler中的getHeaders方法的實現與服務器soaphandler中的getHeaders實現之間是否存在任何語義差異,假設請求/響應消息交換模式(客戶端是源)? – user1558688

+1

向下投票,因爲這與HTTP或HTTP頭沒有關係,SOAP消息不需要使用HTTP作爲傳輸,並且getHeaders返回的描述是錯誤的。 – kschneid