Spring Integration编组后找不到SOAP标头

奥马尔·贝尔霍达(Omar BELKHODJA)

我正在尝试为SOAP服务创建一个入站网关,该网关接受如下的SOAP请求:

<?xml version="1.0" ?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
  <S:Header>
    <RequestHeader xmlns="http://test.com/">
      <SecurityToken>mytoken</SecurityToken>
      <RequestID>1234</RequestID>
    </RequestHeader>
  </S:Header>
  <S:Body>
    <BaseRequest xmlns="http://test.com/">
      <RequestData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xsi:type="BalanceRequest">
        <CustomerID>1234</CustomerID>
      </RequestData>
    </BaseRequest>
  </S:Body>
</S:Envelope>

我想使用JAXB来编组/解组请求/响应。我已经设法通过以下方式配置Spring / Spring集成:

<oxm:jaxb2-marshaller id="soapMarshaller" context-path="com.test" />
<int:channel id="soap-channel"/>
<int-ws:inbound-gateway id="ws-inbound-gateway" 
                        request-channel="soap-channel"
                        marshaller="soapMarshaller"/>
<int:service-activator input-channel="soap-channel">
    <bean class="com.test.SoapServiceActivator"/>
</int:service-activator>

而且我尝试在服务激活器中提取SOAP标头和主体。

@ServiceActivator
public BaseResponse issueResponseFor(BaseRequest body, 
                                     @Headers Map<String, Object> headerMap) {
    return null;
}

BaseRequest是一个JAXB注释类。

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "requestData"
})
@XmlRootElement(name = "BaseRequest")
public class BaseRequest {

    @XmlElement(name = "RequestData")
    protected BaseRequestBody requestData;

}

我的问题是,在变量主体中,我获得了SOAP请求的主体,但是无论如何我都没有找到提取SOAP请求的标头的方法。headerMap变量仅保存标准的Spring-Integration头(replyChannel,errorChannel,id,timestamp)。标题是指SecurityToken + RequestID,还有带有请求操作名称的HTTP标题。

知道怎么做吗?

阿尔特姆·比兰(Artem Bilan)

尝试使用mapped-request-headers="*"

默认情况下,DefaultSoapHeaderMapper地图仅映射标准标题。在这种情况下,WebServiceHeaders.SOAP_ACTION

更新

引用奥马尔:-)

谢谢 !以下代码运行良好:

@Autowired
@Qualifier("soapMarshaller") 
Jaxb2Marshaller marshaller; 

@ServiceActivator 
public BaseResponse issueResponseFor(BaseRequest request,  @Header("RequestHeader") SoapHeaderElement soapHeader) { 
      BaseRequestHeader requestHeader = (BaseRequestHeader) JAXBIntrospector.getValue(marshaller.unmarshal(soapHeader.getSource()));`

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Spring Integration编组后找不到SOAP标头

来自分类Dev

使用 Spring 的 MockMVC 测试 API 登录后找不到 x-auth-token 标头

来自分类Dev

Spring-Integration-DSL 和 Soap 服务 Soap 标头未被调用

来自分类Dev

Spring Integration WS入站网关删除Soap空标头

来自分类Dev

Spring集成-需要映射SOAP标头

来自分类Dev

Spring Integration-标头丢失

来自分类Dev

Spring Integration入站网关http请求标头

来自分类Dev

将Spring Integration标头值设置为bean属性

来自分类Dev

Spring Integration不转发自定义标头?

来自分类Dev

Spring Integration:如何过滤特定的标头 - 只能使用标头映射器?

来自分类Dev

Spring找不到网址

来自分类Dev

Spring-WS为SOAP版本1.2设置SOAPAction标头

来自分类Dev

在Spring WS中将自定义元素添加到SOAP标头

来自分类Dev

如何使用spring-ws和jaxb从WS响应中提取SOAP标头

来自分类Dev

如何在SOAP标头spring-ws中添加xmlbean文档元素

来自分类Dev

SOAP UI在Spring WS Soap Service中找不到依赖WSDL的XSD文件

来自分类Dev

如何使用Spring Integration Expression验证标头是否具有属性?

来自分类Dev

如何在Spring-Integration中将SOAPAction标头添加到HTTP消息中?

来自分类Dev

消息标头未包含在Spring Integration DSL的错误处理中

来自分类Dev

Spring Integration DSL-可以访问标头的出站网关

来自分类Dev

如何在Spring Integration Gateway中获取自定义标头值?

来自分类Dev

Spring Integration HTTP Outbound Gateway标头未在连续请求时转发

来自分类Dev

Spring Integration Rest Service调用中如何在Http.outboundGateway中添加cutom标头?

来自分类Dev

Spring Integration TCP中是否可以使用自定义标头?

来自分类Dev

当发送给订户时,spring-integration将丢失标头

来自分类Dev

Spring Integration和RabbitMQ:接收消息时没有可用的output-channel或ReplyChannel标头

来自分类Dev

为什么在 Spring Integration 中将 ID 和 TIMESTAMP 声明为临时标头?

来自分类Dev

如何避免在 Spring Integration @ServiceActivator 方法中将标头从输入复制到输出

来自分类常见问题

找不到Spring DataSize类

Related 相关文章

  1. 1

    Spring Integration编组后找不到SOAP标头

  2. 2

    使用 Spring 的 MockMVC 测试 API 登录后找不到 x-auth-token 标头

  3. 3

    Spring-Integration-DSL 和 Soap 服务 Soap 标头未被调用

  4. 4

    Spring Integration WS入站网关删除Soap空标头

  5. 5

    Spring集成-需要映射SOAP标头

  6. 6

    Spring Integration-标头丢失

  7. 7

    Spring Integration入站网关http请求标头

  8. 8

    将Spring Integration标头值设置为bean属性

  9. 9

    Spring Integration不转发自定义标头?

  10. 10

    Spring Integration:如何过滤特定的标头 - 只能使用标头映射器?

  11. 11

    Spring找不到网址

  12. 12

    Spring-WS为SOAP版本1.2设置SOAPAction标头

  13. 13

    在Spring WS中将自定义元素添加到SOAP标头

  14. 14

    如何使用spring-ws和jaxb从WS响应中提取SOAP标头

  15. 15

    如何在SOAP标头spring-ws中添加xmlbean文档元素

  16. 16

    SOAP UI在Spring WS Soap Service中找不到依赖WSDL的XSD文件

  17. 17

    如何使用Spring Integration Expression验证标头是否具有属性?

  18. 18

    如何在Spring-Integration中将SOAPAction标头添加到HTTP消息中?

  19. 19

    消息标头未包含在Spring Integration DSL的错误处理中

  20. 20

    Spring Integration DSL-可以访问标头的出站网关

  21. 21

    如何在Spring Integration Gateway中获取自定义标头值?

  22. 22

    Spring Integration HTTP Outbound Gateway标头未在连续请求时转发

  23. 23

    Spring Integration Rest Service调用中如何在Http.outboundGateway中添加cutom标头?

  24. 24

    Spring Integration TCP中是否可以使用自定义标头?

  25. 25

    当发送给订户时,spring-integration将丢失标头

  26. 26

    Spring Integration和RabbitMQ:接收消息时没有可用的output-channel或ReplyChannel标头

  27. 27

    为什么在 Spring Integration 中将 ID 和 TIMESTAMP 声明为临时标头?

  28. 28

    如何避免在 Spring Integration @ServiceActivator 方法中将标头从输入复制到输出

  29. 29

    找不到Spring DataSize类

热门标签

归档