cxf producer needs a break?

classic Classic list List threaded Threaded
12 messages Options
Reply | Threaded
Open this post in threaded view
|

cxf producer needs a break?

Smith-John
Hi,

I have a strange (at least for me) issue with my route respectively the cxf component in it.

The route looks like
from("cxf:XXX?wsdlURL=YYY&...")....to(...)...to("cxf:${header[ReplyTo]}?wsdlURL=YYY&...");
I get a one way SOAP message, do some work with it and send a response back to the callback address specified.

In principle this works perfect.
But sending requests with a short interval, I would say less than 5 seconds between the requests, the messaging fails.
Sending requests every > 5 seconds: no problem.
Sending requests with time between them < 5 seconds: all except the first one fail.

I'm using camel 2.10.4 and for sending the requests SoapUI.

Unfortunately the console shows no errors. The only difference between a working and a not working try is the last DEBUG notification that is
[default-workqueue-1] DEBUG o.a.c.c.cxf.CxfClientCallback - default-workqueue-1 calling handleResponse
for a working one and
[default-workqueue-2] DEBUG o.a.c.c.cxf.CxfClientCallback - default-workqueue-2 calling handleException
for a failing one.

Is this a bug or normal behaviour? Is there something to prevent this?

Best regards.
Reply | Threaded
Open this post in threaded view
|

Re: cxf producer needs a break?

Willem.Jiang
Administrator
It looks like a bug of camel-cxf component.
Can you submit a simple test case to the JIRA[1] so we can keep digging the issue.

BTW, you can disable the async invocation by setting the option "synchronous=false"

[1]http://issues.apache.org/jira/browse/CAMEL 

--  
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 Wednesday, April 10, 2013 at 6:58 AM, Smith-John wrote:

> Hi,
>  
> I have a strange (at least for me) issue with my route respectively the cxf
> component in it.
>  
> The route looks like
> from("cxf:XXX?wsdlURL=YYY&...")....to(...)...to("cxf:${header[ReplyTo]}?wsdlURL=YYY&...");  
> I get a one way SOAP message, do some work with it and send a response back
> to the callback address specified.
>  
> In principle this works perfect.  
> But sending requests with a short interval, I would say less than 5 seconds
> between the requests, the messaging fails.
> Sending requests every > 5 seconds: no problem.
> Sending requests with time between them < 5 seconds: all except the first
> one fail.
>  
> I'm using camel 2.10.4 and for sending the requests SoapUI.
>  
> Unfortunately the console shows no errors. The only difference between a
> working and a not working try is the last DEBUG notification that is
> [default-workqueue-1] DEBUG o.a.c.c.cxf.CxfClientCallback -
> default-workqueue-1 calling handleResponse  
> for a working one and
> [default-workqueue-2] DEBUG o.a.c.c.cxf.CxfClientCallback -
> default-workqueue-2 calling handleException
> for a failing one.
>  
> Is this a bug or normal behaviour? Is there something to prevent this?
>  
> Best regards.
>  
>  
>  
> --
> View this message in context: http://camel.465427.n5.nabble.com/cxf-producer-needs-a-break-tp5730612.html
> Sent from the Camel - Users mailing list archive at Nabble.com (http://Nabble.com).



Reply | Threaded
Open this post in threaded view
|

Re: cxf producer needs a break?

Smith-John
I'm not sure if synchronous=false or true makes any difference in this route? At any rate it doesn't fix my problem ;)

But I had an other idea: I'm not a http expert, but is it possible that after sending a message via http to a certain port, this port is occupied and needs to be released from http first before it is possible to send another message to it?  

Regards.
Reply | Threaded
Open this post in threaded view
|

Re: cxf producer needs a break?

dkulp@apache.org
In reply to this post by Smith-John

What version of the JDK are you using?    Can you back up a few versions?   There is a bug introduced in 1.6 update 38 that can cause some of the keep-alive handling in the JDK to mis-behave.  This might be a symptom of this.

Dan



On Apr 9, 2013, at 6:58 PM, Smith-John <[hidden email]> wrote:

> Hi,
>
> I have a strange (at least for me) issue with my route respectively the cxf
> component in it.
>
> The route looks like
> from("cxf:XXX?wsdlURL=YYY&...")....to(...)...to("cxf:${header[ReplyTo]}?wsdlURL=YYY&...");
> I get a one way SOAP message, do some work with it and send a response back
> to the callback address specified.
>
> In principle this works perfect.
> But sending requests with a short interval, I would say less than 5 seconds
> between the requests, the messaging fails.
> Sending requests every > 5 seconds: no problem.
> Sending requests with time between them < 5 seconds: all except the first
> one fail.
>
> I'm using camel 2.10.4 and for sending the requests SoapUI.
>
> Unfortunately the console shows no errors. The only difference between a
> working and a not working try is the last DEBUG notification that is
> [default-workqueue-1] DEBUG o.a.c.c.cxf.CxfClientCallback -
> default-workqueue-1 calling handleResponse
> for a working one and
> [default-workqueue-2] DEBUG o.a.c.c.cxf.CxfClientCallback -
> default-workqueue-2 calling handleException
> for a failing one.
>
> Is this a bug or normal behaviour? Is there something to prevent this?
>
> Best regards.
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/cxf-producer-needs-a-break-tp5730612.html
> Sent from the Camel - Users mailing list archive at Nabble.com.

--
Daniel Kulp
[hidden email] - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com

Reply | Threaded
Open this post in threaded view
|

Re: cxf producer needs a break?

Smith-John
Hi,

I'm using 1.6.34.
Maybe better try a newer one than an older one?

Regards.
Reply | Threaded
Open this post in threaded view
|

Re: cxf producer needs a break?

Smith-John
In reply to this post by Willem.Jiang
Hi,

added the issue to the JIRA[1].

Regards.

[1]https://issues.apache.org/jira/browse/CAMEL-6295
Reply | Threaded
Open this post in threaded view
|

Re: cxf producer needs a break?

Willem.Jiang
Administrator
In reply to this post by Smith-John
camel-cxf is using the asyn invocation by default, if you add the synchronous=true , it will use the synchronous invocation instead.

Willem
Reply | Threaded
Open this post in threaded view
|

Re: cxf producer needs a break?

Smith-John
Yeah I know. But this doesn't fix the problem.
Reply | Threaded
Open this post in threaded view
|

Re: cxf producer needs a break?

Smith-John
In reply to this post by Willem.Jiang
Just to check if I understand you right:

Do you mean, my route should look like
from("cxf:XXX?wsdlURL=YYY&...")....to(...)...to("cxf:${header[ReplyTo]}?wsdlURL=YYY&...&synchronous=true");
instead of
from("cxf:XXX?wsdlURL=YYY&...")....to(...)...to("cxf:${header[ReplyTo]}?wsdlURL=YYY&...");
?

I tried this, but cxf producer nevertheless isn't capable to send a message every 2 seconds for example.

Regards.
Reply | Threaded
Open this post in threaded view
|

Re: cxf producer needs a break?

Raul Kripalani
Are you sure the problem is on Camel's end? I've never seen such a
behaviour.

How long does the external service take to respond? Perhaps it cannot
handle concurrent requests? Or it responds badly?

What's the exception seen by Camel?

To aid investigation, I suggest you monitor de HTTP traffic using
Wireshark, tcpdump or a proxy.

Regards,
Raúl.
On 22 Apr 2013 13:37, "Smith-John" <[hidden email]> wrote:

> Just to check if I understand you right:
>
> Do you mean, my route should look like
>
> from("cxf:XXX?wsdlURL=YYY&...")....to(...)...to("cxf:${header[ReplyTo]}?wsdlURL=YYY&...&synchronous=true");
> instead of
>
> from("cxf:XXX?wsdlURL=YYY&...")....to(...)...to("cxf:${header[ReplyTo]}?wsdlURL=YYY&...");
> ?
>
> I tried this, but cxf producer nevertheless isn't capable to send a message
> every 2 seconds for example.
>
> Regards.
>
>
>
> --
> View this message in context:
> http://camel.465427.n5.nabble.com/cxf-producer-needs-a-break-tp5730612p5731249.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
Reply | Threaded
Open this post in threaded view
|

Re: cxf producer needs a break?

Willem.Jiang
Administrator
In reply to this post by Smith-John
Hi , you need use that option on consumer and producer at the same time just like this  
from("cxf:XXX?wsdlURL=YYY&…&synchronous=true")....to(...)...to("cxf:${header[ReplyTo]}?wsdlURL=YYY&…&synchronous=true");

BTW, it could be great if you can submit a simple test case to the JIRA, then we can keep on digging the issue.  

--  
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 Monday, April 22, 2013 at 8:36 PM, Smith-John wrote:

> Just to check if I understand you right:
>  
> Do you mean, my route should look like
> from("cxf:XXX?wsdlURL=YYY&...")....to(...)...to("cxf:${header[ReplyTo]}?wsdlURL=YYY&...&synchronous=true");
> instead of
> from("cxf:XXX?wsdlURL=YYY&...")....to(...)...to("cxf:${header[ReplyTo]}?wsdlURL=YYY&...");  
> ?  
>  
> I tried this, but cxf producer nevertheless isn't capable to send a message
> every 2 seconds for example.
>  
> Regards.
>  
>  
>  
> --
> View this message in context: http://camel.465427.n5.nabble.com/cxf-producer-needs-a-break-tp5730612p5731249.html
> Sent from the Camel - Users mailing list archive at Nabble.com (http://Nabble.com).



Reply | Threaded
Open this post in threaded view
|

Re: cxf producer needs a break?

Smith-John
@Willem:

Hi,
I changed the route like you said. But this doesn't change anything concerning the problem.

I created a Issue [1] and added everything needed to check the problem: the Java class + wsdl to start the camel route & a SoapUI project for testing it.

[1] https://issues.apache.org/jira/browse/CAMEL-6295


@Paul:

There is no external service. I "call" the route respectively the web service of the route via SoapUI and get the response back to SoapUI.