camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Willem jiang <willem.ji...@gmail.com>
Subject Re: How to avoid that "" with camel cxf
Date Thu, 24 Jan 2013 07:33:20 GMT
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.jiang@gmail.com (mailto:willem.jiang@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 <ch007m@gmail.com (mailto:ch007m@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.jiang@gmail.com (mailto:willem.jiang@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.jiang@gmail.com
(mailto:willem.jiang@gmail.com)
> > (mailto:
> > > > willem.jiang@gmail.com (mailto:willem.jiang@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




Mime
View raw message