【问题标题】:Add SOAP Header to spring-ws 2.2.0 endpoint response将 SOAP 标头添加到 spring-ws 2.2.0 端点响应
【发布时间】:2015-02-26 14:21:27
【问题描述】:

我需要使用 spring-ws 在响应中构建一个包含 SOAP 标头的 Web 服务。

我的端点处理请求标头,然后返回将成为 SOAP 主体响应的元素。

我需要做的是使用请求标头中的信息向该响应添加一个 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/

非常感谢 问候

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-20
      • 1970-01-01
      • 2014-10-07
      • 1970-01-01
      • 2015-07-19
      相关资源
      最近更新 更多