WSO2ESB: заголовок действия SOAP отличается от ожидаемого в ответе

#wso2 #wso2esb

# #wso2 #wso2-esb

Вопрос:

Пытаюсь выяснить, почему мой заголовок действия SOAP Envelope не соответствует моим ожиданиям. Я вызываю WSO2ESB и связываюсь с другой службой WCF. Я использую NTLMmediator для аутентификации в серверной службе.

Моя транзакция ввода выглядит следующим образом

 <s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
    <s:Header>
        <a:Action s:mustUnderstand="1">http://www.mycompany.com/services/GetProductsByCustomerNbr</a:Action>
        <a:MessageID>urn:uuid:448cb5ec-b2d8-4292-b245-5b0d42c0e52a</a:MessageID>
        <a:ReplyTo>
            <a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
        </a:ReplyTo>
        <a:To s:mustUnderstand="1">https://hapq-vpwebtran1.afcorp.afg/AnnuityWebService/VpasAnnuityServiceAdaptor.svc/windows</a:To>
        <o:Security s:mustUnderstand="0" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
            <u:Timestamp u:Id="_0">
                <u:Created>2016-10-10T20:57:42.292Z</u:Created>
                <u:Expires>2016-10-14T21:02:42.292Z</u:Expires>
            </u:Timestamp>
            <o:UsernameToken u:Id="uuid-83e06bc8-c659-4ddc-845a-de86f0dd19f8-1">
                <o:Username>JoeTest</o:Username>
                <o:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">JoeTest</o:Password>
            </o:UsernameToken>
        </o:Security>
    </s:Header>
    <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        Transaction body
    </s:Body>
</s:Envelope>
 

Как выглядит моя транзакция, когда я записываю ее изнутри моего посредника и из значения Envelope при входе в мою прокси-службу после выполнения моего посредника. Это то, что я ожидаю от значения действия: GetProducesByCustomerNbrResponse

 <s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
    <s:Header>
        <a:Action s:mustUnderstand="1">http://www.mycompany.com/services/GetProductsByCustomerNbrResponse</a:Action>
        <a:RelatesTo>urn:uuid:448cb5ec-b2d8-4292-b245-5b0d42c0e52a</a:RelatesTo>
    </s:Header>
    <s:Body xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        Transation body
    </s:Body>
</s:Envelope>
 

Как это выглядит в моих проводных журналах, показано ниже. Вы можете видеть, что действие теперь GetProductsByCustomerNbr вместо GetPRoductsByCustomerNbrResponse

 <s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
    <s:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
        <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" s:mustUnderstand="true">
            <wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Timestamp-1">
                <wsu:Created>2016-10-13T22:49:45.858Z</wsu:Created>
                <wsu:Expires>2016-10-13T22:54:45.858Z</wsu:Expires>
            </wsu:Timestamp>
        </wsse:Security>
        <wsa:MessageID>urn:uuid:d5677050-3ce7-4f11-a269-83c626967b39</wsa:MessageID>
        <wsa:Action>http://www.mycompany.com/services/GetProductsByCustomerNbr</wsa:Action>
    </s:Header>
    <s:Body xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        Transation body
    </s:Body>
</s:Envelope>
 

Я не понимаю, почему я вижу действие транзакции ввода, а не действие с вывода. Я уверен, что я что-то упускаю или делаю неправильно, но я изо всех сил пытаюсь это найти. Если у кого-нибудь есть какие-либо мысли или он может указать мне правильное направление, я был бы признателен. Если я не смог предоставить какую-либо информацию, которая была бы полезной, пожалуйста, дайте мне знать, и я опубликую ее.

Ответ №1:

Мне пришлось добавить свойства к моему прокси, чтобы заставить это работать. Ниже приведены 2 свойства, которые я должен был добавить.

disableAddressingForOutMessages, чтобы ESB не добавлял заголовки WS-адресации к исходящим сообщениям

СОХРАНИТЬ_WS_ADDRESSING, чтобы ESB переслал его без изменения существующих заголовков WS-адресации

 <property name="disableAddressingForOutMessages" scope="axis2" value="true"/>
<property name="PRESERVE_WS_ADDRESSING" scope="default" value="true"/>