You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cxf.apache.org by Willem jiang <wi...@gmail.com> on 2013/08/06 04:45:09 UTC
FailOver Feature doesn't support the async calling of client
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.
[1]https://issues.apache.org/jira/browse/CAMEL-6609
Regards,
Willem
Re: FailOver Feature doesn't support the async calling of
client
Posted by Willem jiang <wi...@gmail.com>.
Hi Dan,
It's really helpful.
Thanks,
--
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, August 6, 2013 at 11:12 AM, Daniel Kulp wrote:
>
> On Aug 5, 2013, at 10:45 PM, Willem jiang <willem.jiang@gmail.com (mailto: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
Re: FailOver Feature doesn't support the async calling of client
Posted by Daniel Kulp <dk...@apache.org>.
On Aug 5, 2013, at 10:45 PM, Willem jiang <wi...@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