Hi

Yeah you can use onException and handled = true, and then do a message
translation where you convert the exception into a soap message.

The caused exception is stored as a property on the exchange with key
http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/Exchange.html#EXCEPTION_CAUGHT

See for example Camel in Action page 144 onwards.

On Sat, Jul 26, 2014 at 12:07 AM, Matt Raible <[email protected]> wrote:
> 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



-- 
Claus Ibsen
-----------------
Red Hat, Inc.
Email: [email protected]
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen
hawtio: http://hawt.io/
fabric8: http://fabric8.io/

Reply via email to