如何在soap spring-ws中发送多部分消息?

时间:2013-03-07 16:35:19

标签: soap spring-ws

我想使用spring框架和spring-ws来发送/接收SOAP消息。但是,我没有看到如何发送包含多个部分的消息。

<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对象。 谢谢, 汉克

2 个答案:

答案 0 :(得分:1)

我能够通过使用CXF(使用wsdl2java)而不是spring-ws的默认JAXB行为来实现此功能。 CXF似乎支持多部分消息,而CXF可以与Spring WS(以及Boot)一起使用。

答案 1 :(得分:0)

我有同样的问题。我没有找到一种方法来使用spring-ws来使用这样的Web服务,但是我确实找到了WS-I Basic Profile spec中相关段落的链接,其中说明身体中最多只能有一个部分。所以我计划使用这些信息来试图说服创建服务的人将服务更改为只有一个部分,以符合WS-I Basic Profile规范,从而提高互操作性。

可能有助于说服服务开发人员改变的另一点是,由于WSDL中的多个部分,尝试验证SOAPUI中的任何示例请求消息实际上都会产生错误:“第-1行:DocLiteral消息必须包含1个身体部位定义“

请记住,WS-I Basic Profile规范比WSDL架构更严格,因此虽然此服务可能违反WS-I Basic Profile规范,但它仍可能针对WSDL架构进行验证。但是,遵守WS-I Basic Profile规范很重要,因为according to Wikepedia,许多常见的WS工具和框架只支持WS-I Basic Profile规范中的服务。