如何使用spring-ws添加SOAP头



我用Spring-WS创建了一个web服务端点:

@Endpoint
public class MyEndpoint{
@PayloadRoot(namespace = NAMESPACE, localPart = "MyRequest"
@ResponsePayload
public final MyResponse MyService(@RequestPayload final MyRequest request, SoapHeader header) {
... implementation that creates the reponse ...
return response;
}

将创建服务并为服务生成WSDL。但是,WSDL中的部分仍然为空。

那么,我要做什么才能"填充"标题?

SoapHeader不代表单独的标头块,而是包含所有标头块作为子元素的soap:Header元素。这意味着您的服务定义没有提供足够的元数据来生成带有消息部分绑定到报头块的WSDL。您必须用@SoapHeader注释声明SoapHeaderElement参数,该注释指定头块的名称。理论上,这将提供足够的元数据来生成预期的WSDL,但我相信在实践中Spring-WS并不支持这一点。注意,这并不意味着生成的WSDL是不正确的。原因是在WSDL中声明头块并不是强制性的。

最新更新