cxf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Daniel Kulp <dk...@apache.org>
Subject Re: FailOver Feature doesn't support the async calling of client
Date Tue, 06 Aug 2013 03:12:01 GMT

On Aug 5, 2013, at 10:45 PM, Willem jiang <willem.jiang@gmail.com> wrote:

> Hi Team,
> 
> I just fixed CAMEL-6609[1] by calling the getConduitSelector().complete(cxfExchange)
inside of my custom CallBack method. But I think I should fix it from CXF.
> 
> I tried to add this call into the org.apache.cxf.message.Message.ClientCallback class,
but I found  I have to get the reference of ClientImpl to do that call.
> I also tried to add some code in the ClientImpl, but I found the ClientOutFaultObserver
will call the ClientCallback handleException when exception is through, and I don't like the
idea to let the ClientOutFaultObserver hold the reference of ClientImpl. 
> 
> Is there any good way to let the getConduitSelector().complete(cxfExchange) be called
rightly, when the exception is thrown from the interceptor chain.

Shouldn't this just be adding a couple more calls to ….complete(exchange) in the ClientImpl.processResult,
particularly in the if (callback != null) paths?

For the outFault case… in ClientImpl where it adds it to the chain, do:

            chain.setFaultObserver(new MessageObserver() {
                public void onMessage(Message message) {
                    outFaultObserver.onMessage(message);
                    getConduitSelector().complete(message.getExchange());
                }
            });

to wrapper it and handle the completions.  That avoids adding the ClientImpl directly to the
ClientOutFaultObserver.

Actually, in ClientImpl.prepareConduitSelector(…), the conduit selector is set into the
exchange.   Thus, at any point, you should be able to do message.getExchange().get(ConduitSelector.class)….
and use it.

Dan


> 
> [1]https://issues.apache.org/jira/browse/CAMEL-6609
> 
> Regards,
> 
> Willem
> 
> 
> 

-- 
Daniel Kulp
dkulp@apache.org - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com


Mime
View raw message