WSO2 API 管理器 (WSO2-AM) 和 Web 服务寻址 (WS-A )

WSO2 API Manager (WSO2-AM) and Web services addressing (WS-A )

我在使用 Web 服务寻址的 Weblogic 服务器中托管了一个 SOAP Web 服务 (WS-A)。我正在尝试使用 WSO2 API 管理器发布它。

原始请求有一个完整的 SOAP header,包括一个 Action 和 MessageID:

    <soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
     <wsa:Action>urn:es:cetelem:ws:venta:promociones:services:promocionesService:promocionesService_v03:PromocionesServicePortType:obtenerPromocionesOperacionVndRequest</wsa:Action>
   <wsa:MessageID>uuid:969e636c-067f-4bed-a38a-65f0f81c295d</wsa:MessageID>
</soapenv:Header>

但是 wso2-am 在发送到 Werblogic 服务器中的最终端点之前从 SOAP Header 中删除了字段 Action 和 MessageID。这是 wso2-am 发送错误听众的例子 <soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"/>

如何配置 wso2-am 以保留客户端发送的 SOAP Header。

我找到了解决办法。我在 [CARBON-HOME]/repository/deployment/server/synapse-configs/default/sequences 中添加了一个新的序列中介扩展以保留原始 WS-A headers。新扩展设置为true PRESERVE_WS_ADDRESSING 属性。

访问https://docs.wso2.com/display/ESB460/Generic+Properties
新中介的代码是:

<sequence xmlns="http://ws.apache.org/ns/synapse" name="WSO2AM--Ext--In">
    <property name="PRESERVE_WS_ADDRESSING" value="true" scope="default" type="STRING"/>
</sequence>