I have done a bit more testing with this and seem to not be able to actually catch SOAP faults as exceptions.
Lets say my CXF consumer throws the following in my route: 13:58:57,419 | WARN | qtp50072751-7150 | PhaseInterceptorChain | ? ? | - - | Interceptor for {http://webservice.ihg.com}JavelinInitiateServiceService#{http://webservice.ihg.com}addAccount has thrown exception, unwinding now org.apache.cxf.interceptor.Fault: Unmarshalling Error: String "TRUE" is not valid boolean value. at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:801)[133:org.apache.cxf.bundle:2.4.3.fuse-00-13] at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:642)[133:org.apache.cxf.bundle:2.4.3.fuse-00-13] at org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:156)[133:org.apache.cxf.bundle:2.4.3.fuse-00-13] at org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:109)[133:org.apache.cxf.bundle:2.4.3.fuse-00-13] at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)[133:org.apache.cxf.bundle:2.4.3.fuse-00-13] at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)[133:org.apache.cxf.bundle:2.4.3.fuse-00-13] at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.serviceRequest(JettyHTTPDestination.java:319)[133:org.apache.cxf.bundle:2.4.3.fuse-00-13] at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(JettyHTTPDestination.java:287)[133:org.apache.cxf.bundle:2.4.3.fuse-00-13] at org.apache.cxf.transport.http_jetty.JettyHTTPHandler.handle(JettyHTTPHandler.java:72)[133:org.apache.cxf.bundle:2.4.3.fuse-00-13] at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:939)[114:org.eclipse.jetty.server:7.4.5.fuse20111017] at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:875)[114:org.eclipse.jetty.server:7.4.5.fuse20111017] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)[114:org.eclipse.jetty.server:7.4.5.fuse20111017] at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:247)[114:org.eclipse.jetty.server:7.4.5.fuse20111017] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110)[114:org.eclipse.jetty.server:7.4.5.fuse20111017] at org.eclipse.jetty.server.Server.handle(Server.java:346)[114:org.eclipse.jetty.server:7.4.5.fuse20111017] at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:438)[114:org.eclipse.jetty.server:7.4.5.fuse20111017] at org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:922)[114:org.eclipse.jetty.server:7.4.5.fuse20111017] at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:780)[109:org.eclipse.jetty.http:7.4.5.fuse20111017] at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:220)[109:org.eclipse.jetty.http:7.4.5.fuse20111017] at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:43)[114:org.eclipse.jetty.server:7.4.5.fuse20111017] at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:538)[110:org.eclipse.jetty.io:7.4.5.fuse20111017] at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:43)[110:org.eclipse.jetty.io:7.4.5.fuse20111017] at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:529)[115:org.eclipse.jetty.util:7.4.5.fuse20111017] at java.lang.Thread.run(Thread.java:662)[:1.6.0_23] Caused by: javax.xml.bind.UnmarshalException - with linked exception: [javax.xml.bind.UnmarshalException: String "TRUE" is not valid boolean value. - with linked exception: [java.lang.IllegalArgumentException: String "TRUE" is not valid boolean value.]] at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:425)[44:org.apache.servicemix.bundles.jaxb-impl:2.2.1.1_1] at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:362)[44:org.apache.servicemix.bundles.jaxb-impl:2.2.1.1_1] at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:339)[44:org.apache.servicemix.bundles.jaxb-impl:2.2.1.1_1] at org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall(JAXBEncoderDecoder.java:778)[133:org.apache.cxf.bundle:2.4.3.fuse-00-13] ... 23 more Caused by: javax.xml.bind.UnmarshalException: String "TRUE" is not valid boolean value. - with linked exception: [java.lang.IllegalArgumentException: String "TRUE" is not valid boolean value.] at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:642)[44:org.apache.servicemix.bundles.jaxb-impl:2.2.1.1_1] at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleError(UnmarshallingContext.java:671)[44:org.apache.servicemix.bundles.jaxb-impl:2.2.1.1_1] at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleError(UnmarshallingContext.java:667)[44:org.apache.servicemix.bundles.jaxb-impl:2.2.1.1_1] at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.handleParseConversionException(Loader.java:267)[44:org.apache.servicemix.bundles.jaxb-impl:2.2.1.1_1] at com.sun.xml.bind.v2.runtime.unmarshaller.TextLoader.text(TextLoader.java:69)[44:org.apache.servicemix.bundles.jaxb-impl:2.2.1.1_1] at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.text(UnmarshallingContext.java:494)[44:org.apache.servicemix.bundles.jaxb-impl:2.2.1.1_1] at com.sun.xml.bind.v2.runtime.unmarshaller.ValidatingUnmarshaller.text(ValidatingUnmarshaller.java:125)[44:org.apache.servicemix.bundles.jaxb-impl:2.2.1.1_1] at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.processText(StAXStreamConnector.java:334)[44:org.apache.servicemix.bundles.jaxb-impl:2.2.1.1_1] at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.handleEndElement(StAXStreamConnector.java:212)[44:org.apache.servicemix.bundles.jaxb-impl:2.2.1.1_1] at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:181)[44:org.apache.servicemix.bundles.jaxb-impl:2.2.1.1_1] at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:360)[44:org.apache.servicemix.bundles.jaxb-impl:2.2.1.1_1] ... 25 more Caused by: javax.xml.bind.UnmarshalException: String "TRUE" is not valid boolean value. - with linked exception: [java.lang.IllegalArgumentException: String "TRUE" is not valid boolean value.] ... 36 more Caused by: java.lang.IllegalArgumentException: String "TRUE" is not valid boolean value. at com.sun.xml.bind.DatatypeConverterImpl._parseBoolean(DatatypeConverterImpl.java:314)[44:org.apache.servicemix.bundles.jaxb-impl:2.2.1.1_1] at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl$13.parse(RuntimeBuiltinLeafInfoImpl.java:666)[44:org.apache.servicemix.bundles.jaxb-impl:2.2.1.1_1] at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl$13.parse(RuntimeBuiltinLeafInfoImpl.java:669)[44:org.apache.servicemix.bundles.jaxb-impl:2.2.1.1_1] at com.sun.xml.bind.v2.runtime.unmarshaller.TextLoader.text(TextLoader.java:65)[44:org.apache.servicemix.bundles.jaxb-impl:2.2.1.1_1] ... 31 more I tried to catch the both the fault and then when that didn't work, the global java exception just to get a result, but neither seem to catch this. My route is <route id="JavelinInitiateService"> <from uri="cxf:bean:initiateCXFConsumer" /> <onException> <exception>java.lang.Exception</exception> <handled><constant>true</constant></handled> <log message="generic exception" /> </onException> <onException> <exception>org.apache.cxf.interceptor.Fault</exception> <handled><constant>true</constant></handled> <log message="cxf fault" /> </onException> <to uri="cxf:bean:initiateCXFProducer"/> </route> -- View this message in context: http://camel.465427.n5.nabble.com/Detecting-SOAP-Faults-tp5618665p5621045.html Sent from the Camel - Users mailing list archive at Nabble.com.