java - 将 SOAP header 添加到 spring-ws 2.2.0 端点响应

标签 java spring web-services soap spring-ws

我需要构建一个 Web 服务,其中包含 spring-ws 响应中的 SOAP header 。

我的端点处理请求 header ,然后返回将成为 SOAP 正文响应的元素。

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

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

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

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

但是,文档也有这种替代方案

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

但这对我不起作用,因为我不想解码有效负载,只想解码 header 。

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

非常感谢 问候

最佳答案

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

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

修复后,我就能够获得所需的三个参数,即用 @RequestPayload 注释的有效负载、SoapHeader 和 MessageContext。

有了所有这些东西,我就能够将消息上下文中的对象设置为属性。然后,我编写了一个 EndpointInterceptor,并在“handleResponse”方法中使用对象中的信息生成了 SOAP header 。

关于java - 将 SOAP header 添加到 spring-ws 2.2.0 端点响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28744843/

相关文章:

java - 用于执行 Java Web 服务的测试工具工具

ios - 如何使用带委托(delegate)方法的 NSURLSession 连接到 Web 服务?

java - 将领域对象映射到服务层或Web层中的资源对象?

java - HttpResponse header 的 Junit 测试

java - 我如何使用一个根上下文创建两个 AbstractAnnotationConfigDispatcherServletInitializer?

java - 检索 spring boot 中的特定字段

java - 单个请求的 SOAP Web 服务保持 Activity 状态?

Java 相当于 PHP str_word_count?

java - 当用户输入数量未知时如何使用固定长度数组

java - 使用 SpringMVC 初始化 Spring-Security