Search code examples
wsdlmule

Does Mule CXF proxy service overwrites the soap:address location attribute of wsdl


This is how part of my Mule 3.3.0 flow is:

<flow name="soapService">
        <http:inbound-endpoint address="${my.service.address}" exchange-pattern="request-response">
            <cxf:proxy-service wsdlLocation="classpath:order.wsdl" namespace="http://abc.com/services/order" service="OrderService"
                enableMuleSoapHeaders="false">
            </cxf:proxy-service>
        </http:inbound-endpoint>
...

</flow>

No matter, whatever I specify in my order.wsdl <soap:address location="http://server.com/order">, this is being overwritten by ${my.service.address} value specified in <http://inbound-endpoint address="${my.service.address}">

If I check in my wsdl in classes folder, it has the correct value in location attribute of <soap:address> element but when try to see the wsdl from browser, value is replaced with address of <http:inbound-endpoint>


Solution

  • This is a feature not a bug :)

    Because your are using a CXF proxy you want the SOAP address to be rewritten to the inbound HTTP endpoint address so that clients consuming the WSDL exposed by Mule will send SOAP requests through the proxy and not directly to whatever SOAP address was initially in the WSDL.