2013-03-07 68 views
2

我想用spring框架和spring-ws發送/接收SOAP消息。但是,我不知道如何發送包含多個部分的消息。如何在soap-ws中發送多部分消息?

<message name="getInput"> 
    <part name="authenticationKey" type="FPDS:userAuthenticationKeyType"/> 
    <part name="awardID" type="FPDS:awardIDType"/> 
</message> 

http://www.fpds-ng.com/wiki/index.php/FPDS-NG

但我沒有看到這種API的一個辦法做到這一點,除了構建整個多部分消息我自己,而我有JAXB對象,因爲我想通過部分。 謝謝, Hank

回答

0

我有同樣的問題。我沒有找到使用spring-ws來使用這種web服務的方法,但我確實找到了WS-I Basic Profile spec中的相關段落的鏈接,其中指出最多可以有一個部分位於身體中。因此,我計劃使用這些信息嘗試說服創建該服務的人員將服務更改爲僅在身體中具有一個部分,以符合WS-I Basic Profile規範,從而提高互操作性。

可能有助於說服服務開發人員改變的另一點是,嘗試在SOAPUI中驗證其任何示例請求消息實際上由於WSDL中的多個部分而導致出錯:「line -1:DocLiteral message必須包含1個主體部分定義「

請記住,雖然WS-I Basic Profile規範比WSDL模式更嚴格,所以雖然此服務可能違反WS-I Basic Profile規範,但它可能仍會驗證WSDL模式。但是,符合WS-I基本概要規範很重要,因爲許多常用的WS工具和框架僅支持符合WS-I Basic Profile規範的服務。

+0

所以,我不正確有關的多個部分,有進出只是其中的一部分,但在JBoss WSDL編輯器,並通過wsconsume產生的Java代碼,它不這樣看都: \t \t <操作名稱= 「GET」> \t \t \t <輸入消息= 「FPDS:getInput」/> \t \t \t <輸出消息= 「FPDS:getOutput」/> \t \t 所以我需要研究創造一個不同於上下文ws-consume使用的對象。 – 2013-03-19 22:31:23

0

我能夠通過使用CXF(使用wsdl2java)而不是Spring-ws的默認JAXB行爲來獲得此功能。 CXF似乎支持多部分消息,並且CXF可以與Spring WS(以及Boot)一起使用。

+0

順便說一句,我發現這個答案有助於獲得CXF和Spring Boot一起工作:http://stackoverflow.com/questions/27113468/cxf-with-spring-boot – 2015-06-15 19:30:58