Hello,

Is it possible to convert from returning a SOAP Fault to a SOAP Message when 
using the CXF component? I'm developing a new system to replace one written 
with IBM Message Broker 6.1. When faults occur with IBM, error messages are 
returned that looked the following:

<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";>
        <soapenv:Body>
                <NS1:memberServiceRequest xmlns:NS1="http://ws.app.company.com";>
                        <NS1:return>
                                <NS1:errorData>
                                        <Error>Error goes here</Error>
                                </NS1:errorData>
                        </NS1:return>
                </NS1:memberServiceRequest>
        </soapenv:Body>
</soapenv:Envelope>

When an error occurs with Apache Camel, a soap fault is sent back to the client:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope";>
        <soap:Body>
                <soap:Fault>
                        <soap:Code>
                                <soap:Value>soap:Receiver</soap:Value>
                        </soap:Code>
                        <soap:Reason>
                                <soap:Text xml:lang="en">Error goes 
here</soap:Text>
                        </soap:Reason>
                </soap:Fault>
        </soap:Body>
</soap:Envelope>

I believe sending back a fault is better, but I'd also like to make it possible 
to be backwards compatible, so the old clients don't need to add fault 
handling. To do this, I need to convert from a fault to a message.

The following Stack Overflow post seems like it might work, but I'm unsure how 
to add an out interceptor when the only way I'm definining my CXF service is 
with "cxf:/foo?serviceClass=...".

http://stackoverflow.com/questions/8066474/how-to-transform-soapfault-to-soapmessage-via-interceptor-in-cxf

Thanks,

Matt

Reply via email to