Hi Charles, It was a part of camel-cxf wiki page. Please do a double check out it[1]
[1]http://camel.apache.org/cxf.html#CXF-HowtothrowaSOAPFaultfromCamel -- Willem Jiang Red Hat, Inc. FuseSource is now part of Red Hat Web: http://www.fusesource.com | http://www.redhat.com Blog: http://willemjiang.blogspot.com (http://willemjiang.blogspot.com/) (English) http://jnn.iteye.com (http://jnn.javaeye.com/) (Chinese) Twitter: willemjiang Weibo: 姜宁willem On Thursday, January 24, 2013 at 3:27 PM, Charles Moulliard wrote: > Is it documented in camel-cxf wiki page ? If this is not the case can you > please mention that info please > > > On Tue, Jan 22, 2013 at 4:37 PM, Willem Jiang <willem.ji...@gmail.com > (mailto:willem.ji...@gmail.com)>wrote: > > > Hi Charles, > > Setting the fault flag can tell camel-cxf consumer to treat the response > > as a fault message not a normal response. In this way the CXF fault > > interceptor chain can be used to generate the right soap fault instead of > > trying to marshal the exception object to XML. > > > > 发自我的 iPhone > > > > 在 2013-1-22,下午4:28,Charles Moulliard <ch0...@gmail.com > > (mailto:ch0...@gmail.com)> 写道: > > > > > In my route, the exception is intercepted and handled parameter is true, > > > that means that camel ErrorHandler will not retry > > > > > > onException(CamelAuthorizationException.class) > > > .log(">> User not authorized") > > > .handled(true) > > > .process(new Processor() { > > > @Override > > > public void process(Exchange exchange) throws > > > > > > Exception { > > > String user = "jim"; > > > NotAuthorizedUserFault notAuthorizedUserFault > > > = new NotAuthorizedUserFault(); > > > NotAuthorizedUser notAuthorizedUser = new > > > NotAuthorizedUser(); > > > notAuthorizedUser.setUser(user); > > > exchange.getOut().setBody(notAuthorizedUserFault); > > > } > > > }); > > > > > > So I don't really understand in this case the benefit to use > > setFault(true) > > > > > > > > > > > > > > > > > > On Tue, Jan 22, 2013 at 8:37 AM, Willem jiang <willem.ji...@gmail.com > > > (mailto:willem.ji...@gmail.com) > > > wrote: > > > > > > > Hi Charles, > > > > > > > > Setting the Fault message could avoid the ErrorHandler retry action in > > the > > > > camel route. > > > > As the exception will be intercepted by the ErrorHandler by default. > > > > Fault message means you don't want to camel error handler to kick in. > > > > > > > > > > > > -- > > > > Willem Jiang > > > > > > > > Red Hat, Inc. > > > > FuseSource is now part of Red Hat > > > > Web: http://www.fusesource.com | http://www.redhat.com > > > > Blog: http://willemjiang.blogspot.com (http://willemjiang.blogspot.com/ > > > > > > > > > ) > > > > (English) > > > > http://jnn.iteye.com (http://jnn.javaeye.com/) (Chinese) > > > > Twitter: willemjiang > > > > Weibo: 姜宁willem > > > > > > > > > > > > > > > > > > > > > > > > On Tuesday, January 22, 2013 at 3:31 PM, Charles Moulliard wrote: > > > > > > > > > Additional question about FAULT usage > > > > > > > > > > Camel allows to set the property setFault(true/false) on the IN or OUT > > > > > exchange. This mechanism (I think so) is inherited from Camel 1.x and > > > > > > > > > > > > > was > > > > > coming from JBI specification (NMR). As setFault() property is not > > > > > > > > > > > > > really > > > > > used today (as we can intercept exceptions, link them to the Exchange > > > > > > > > > > > > > and > > > > > return it to the caller = from()), what is really the benefit to use > > > > > setFault() ? Why do we have to setFault for Camel-cxf when we generate > > > > > > > > > > > > > a > > > > > Java Exception (= object that JAXB will convert to SOAP Body = Soap > > > > > > > > > > > > > Error > > > > > Message) ? > > > > > > > > > > > > > > > On Mon, Jan 21, 2013 at 4:04 PM, Willem jiang <willem.ji...@gmail.com > > > > > (mailto:willem.ji...@gmail.com) > > (mailto: > > > > willem.ji...@gmail.com (mailto:willem.ji...@gmail.com))>wrote: > > > > > > > > > > > After some discussion with Charles, it turns out the fault message > > > > > > is > > > > not > > > > > > set up rightly, and we don't need to add the extra classes created > > > > > > to > > > > > > extend Exceptions into the JAXB context as CXFEndpoint does as the > > > > > > CXF > > > > > > fault out interceptor chain will take care of Fault message for us. > > > > > > > > > > > > If you want to setup an customer fault message to the camel-cxf > > > > consumer, > > > > > > Please take a look at example here[1]. > > > > > > > > > > > > [1] > > https://svn.apache.org/repos/asf/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfCustomizedExceptionTest.java > > > > > > > > > > > > -- > > > > > > Willem Jiang > > > > > > > > > > > > Red Hat, Inc. > > > > > > FuseSource is now part of Red Hat > > > > > > Web: http://www.fusesource.com | http://www.redhat.com > > > > > > Blog: http://willemjiang.blogspot.com ( > > > > > > > > > > > > > > > > > http://willemjiang.blogspot.com/) > > > > > > (English) > > > > > > http://jnn.iteye.com (http://jnn.javaeye.com/) (Chinese) > > > > > > Twitter: willemjiang > > > > > > Weibo: 姜宁willem > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Saturday, January 19, 2013 at 12:55 AM, Charles Moulliard wrote: > > > > > > > > > > > > > Hi, > > > > > > > > > > > > > > My camel cxf project uses SOAP fault and Exceptions classes. They > > > > > > > are > > > > > > > generated by cxf 2.6.4 (camel used = 2.10.3) > > > > > > > > > > > > > > package com.redhat.fuse.example; > > > > > > > > > > > > > > import javax.xml.ws.WebFault; > > > > > > > > > > > > > > /** > > > > > > > * This class was generated by Apache CXF 2.6.4 > > > > > > > * 2013-01-18T17:50:59.270+01:00 > > > > > > > * Generated source version: 2.6.4 > > > > > > > */ > > > > > > > > > > > > > > @WebFault(name = "NoSuchCustomer", targetNamespace = " > > > > > > > http://example.fuse.redhat.com/") > > > > > > > public class NoSuchCustomerException extends Exception { > > > > > > > > > > > > > > private com.redhat.fuse.example.NoSuchCustomer noSuchCustomer; > > > > > > > > > > > > > > Nevertheless when the camel cxf endpoint gets the object > > > > > > > (NoSuchCustomerException) to be transformed and next SOAP message > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > created, > > > > > > > the following JAXB error is populated > > > > > > > > > > > > > > https://gist.github.com/6a64fffe39e63200e98a > > > > > > > > > > > > > > I have tried to add that in endpoint configuration but this is not > > > > > > allowed > > > > > > > > > > > > > > <cxf:cxfEndpoint id="WS" > > > > > > > address="http://0.0.0.0:9191/training/WebService" > > > > > > > serviceClass="com.redhat.fuse.example.CustomerService"> > > > > > > > <cxf:outInterceptors> > > > > > > > <ref bean="loggingOutInterceptor"/> > > > > > > > </cxf:outInterceptors> > > > > > > > <cxf:inInterceptors> > > > > > > > <ref bean="loggingInInterceptor"/> > > > > > > > <ref bean="wss4jInInterceptor"/> > > > > > > > <ref bean="authenticationInterceptor"/> > > > > > > > </cxf:inInterceptors> > > > > > > > <cxf:properties> > > > > > > > <entry key="ws-security.validate.token" value="false"/> > > > > > > > <!-- Add extra classes created to extend Exceptions --> > > > > > > > <entry key="jaxb.additionalContextClasses"> > > > > > > > <bean > > > > > > > class="org.apache.cxf.systest.jaxb.util.ClassArrayFactoryBean"> > > > > > > > <property name="classNames"> > > > > > > > <list> > > > > > > > > > > > > > > <value>com.redhat.fuse.example.NotAuthorizedUserException</value> > > > > > > > > > > > > > > <value>com.redhat.fuse.example.NoSuchCustomerException</value> > > > > > > > </list> > > > > > > > </property> > > > > > > > </bean> > > > > > > > </entry> > > > > > > > </cxf:properties> > > > > > > > </cxf:cxfEndpoint> > > > > > > > > > > > > > > Is there a trick ? > > > > > > > > > > > > > > Regards, > > > > > > > > > > > > > > -- > > > > > > > Charles Moulliard > > > > > > > Apache Committer / Sr. Enterprise Architect (RedHat) > > > > > > > Twitter : @cmoulliard | Blog : http://cmoulliard.blogspot.com > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > Charles Moulliard > > > > > Apache Committer / Sr. Enterprise Architect (RedHat) > > > > > Twitter : @cmoulliard | Blog : http://cmoulliard.blogspot.com > > > > > > > > > > > > > > > > > > > -- > > > Charles Moulliard > > > Apache Committer / Sr. Enterprise Architect (RedHat) > > > Twitter : @cmoulliard | Blog : http://cmoulliard.blogspot.com > > > > > > > > -- > Charles Moulliard > Apache Committer / Sr. Enterprise Architect (RedHat) > Twitter : @cmoulliard | Blog : http://cmoulliard.blogspot.com