将SOAP Header添加到spring-ws 2.2.0端点响应中

时间:2015-02-26 14:21:28

标签: java spring web-services soap spring-ws

我需要在带有spring-ws的响应中构建一个包含SOAP Header的Web服务。

我的端点处理请求标头,然后返回将成为SOAP Body响应的Element。

我需要做的是使用请求标头中的信息为该响应添加SOAP标头。

我知道如何做到这一点的唯一方法是使用拦截器,但这样我就不知道如何获取我从请求中解组的头文件对象。

我使用这种方式编写我的端点,因为我想在我的代码中解组并验证标头:

public void handle(@RequestPayload DOMSource domSource, SoapHeader header)

但是,文档也有这个替代

public void handle(@RequestPayload MyJaxb2Object requestObject, @RequestPayload Element element, Message messageContext)

但这对我不起作用,因为我不想解开有效载荷,只需要标题。

我使用的是Spring-ws 2.2.0。 http://docs.spring.io/spring-ws/docs/2.2.0.RELEASE/reference/htmlsingle/

非常感谢 此致

1 个答案:

答案 0 :(得分:1)

好的,所以我找到了解决这个问题的方法。

Spring-WS将接受可以解析的端点处理方法的任何参数。有很多解析器,你可以创建自己的,但我已经存在的那个(MessageContextMethodArgumentResolver),我看到了这个的代码,它只是通过参数类检查。我的问题是,当我应该使用org.springframework.ws.context.MessageContext时,我正在使用Message。

一旦我修复了我能够拥有我需要的三个参数,使用@RequestPayload,SoapHeader和MessageContext注释的有效负载。

通过所有这些,我能够将消息上下文中的对象设置为属性。然后,我写了一个EndpointInterceptor并在" handleResponse"方法I使用我的对象中的信息生成SOAP Header。