Just one more note, please take a look at CXF example[1][2], when you
run mvn install in the camel-example-cxf, you will see the generated
PingMeFault in the targe/generated/src/main/java directory.

[1] http://svn.apache.org/viewvc/camel/trunk/examples/camel-example-cxf
[2] http://camel.apache.org/cxf-example.html

Willem Jiang wrote:
> Hi Lars,
> 
> Can you show me the detail code of FooProcessor() ?
> 
> If you take a look at the PipeLine(which chains these endpoints and
> processor together), you will find the codes about copying exchanges
> between these endpoints and processors.
> 
>     // now lets set the input of the next exchange to the output of the
>         // previous message if it is not null
>         Message previousOut = previousExchange.getOut(false);
>         Message in = answer.getIn();
>         if (previousOut != null) {
>             in.copyFrom(previousOut);
>         } else {
>             in.copyFrom(previousExchange.getIn());
>         }
>         return answer;
> lets take the exchange which will be passed to  bean:FooHandler as an
> example.
> If you set the out message for the FooProcessor exchange,
> bean:FooHandler's exchange's in message will be the previous exchange's
> out message.
> If you don't set the out message for the FooProcessor exchange,
> bean:FooHandler's exchange's in message will be the previous exchange's
> in message.
> 
> For the fault message part, camel-cxf component supports to through the
> soap fault here [1]. If I remember right, when you set the exchange's
> fault message, cxf will marshal it into soap fault message. Please feel
> free to try it.
> 
> [1]http://camel.apache.org/cxf.html#CXF-HowtothrowtheSOAPFaultfromCamel
> 
> Willem
> 
> Lars Ivar Igesund wrote:
>> Hi!
>>
>> I have had a working CXF endpoint (server) connected to my route for a
>> short while now, but the service only had an in message and the route
>> looked like this:
>>
>> from (cxfEndpoint).process(new FooProcessor()).to ( "bean:FooHandler");
>>
>> However, the caller of the service wants a response which is fairly
>> simple. OK if the processor (which I guess really should be transform
>> instead) succeeds, an error message describing the issue if it fails.
>>
>> So I defined an out message for the operation, and in the first test
>> (for OK), I expected to be able to do
>>
>> from (cxfEndpoint).process(new FooProcessor()).to (
>> "bean:FooHandler").transform(constant(OK));
>>
>> This does however fail in the handler step because the out message of
>> the exchange processed in the FooProcessor is no longer a FooMessage
>> (even if I do exchange.getOut().setBody(new FooMessage()); but rather
>> a CxfMessage.
>>
>> I always assume that I use the API wrong, but in this case the router
>> acts inconsistently depending on whether the exchange expects an out
>> message or not. I thought that the out message part where it is
>> returned to the originating endpoint only should happen at the end of
>> the route.
>>
>> As for the fault, I think I want to use the exchange.getFault()
>> message, but I had some trouble finding a WSDL example where such a
>> message is defined.
>>
>> Please help me suggest how the route should look, how to propagate the
>> messages correctly and properly and how to define the fault message
>> (in the WSDL). Actually, can I possibly just put an Exception instance into 
>> the fault message?
>>
>> Best,
>> Lars Ivar
>>
>>
> 
> 

Reply via email to