Thanks for the reply Dan. I was using Java 6u13. Today I tried it out with the latest 6u14 and it still times out between 2 and 3 seconds no matter what I do.
I set httpClientPolicy.setAutoRedirect(true); and httpClientPolicy.setMaxRetransmits(5); and watched the connection attempts using tcpmon. It seems to only try 2 times no matter what I set the values to... Somewhere deep in the Internet, I found someone suggesting to do System.setProperty( "sun.net.client.defaultConnectTimeout", "5000" );, but that also did nothing for me. Maybe I'll try with an older version of Java and see what happens... Any other suggestions would be great as I am quite stuck. Kevin -----Original Message----- From: Daniel Kulp [mailto:dk...@apache.org] Sent: June-18-09 12:02 PM To: users@cxf.apache.org Cc: Kevin Priebe Subject: Re: Connection timeout ignored We just set the connectionTimeout setting on the HTTPUrlConnection object. Thus, if that's not working, that would probably be a JDK bug. :-( On the re-transmits.... Looks like there is a bug. If you add: httpClientPolicy.setAutoRedirect(true); then I think it will work. Basically, for the retransmits, we need to buffer the message. Turning on the AutoRedirect turns on the buffering. We should also turn it on if the retransmits are > 0. Dan On Wed June 17 2009 5:53:30 pm Kevin Priebe wrote: > Hi, I am doing some testing with connection time outs with CXF 2.2.2. I am > setting it programmatially using the HTTPClientPolicy (see code below). It > seems the timeout is ignored if the web server is offline. I can set the > timeout to any value and it will consistently timeout after about 2 seconds > (which is very low!). The timeout does seem to work correctly when I > simply put Thread.sleep() in the ping() service method, or maybe that's > just the receive timeout working by that point... I am not using spring at > all on the client, no spring jars or anything. Here is my client code: > > > > -------------------------------- > > JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); > > factory.setServiceClass(serviceInterface); > > factory.setAddress(url); > > > > AegisDatabinding binding = new AegisDatabinding(); > > binding.setMtomEnabled(mtom); > > factory.setDataBinding(binding); > > > > MyService service = (MyService)factory.create(); > > > > Client cl = ClientProxy.getClient(service); > > > > HTTPConduit http = (HTTPConduit) cl.getConduit(); > > > > HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy(); > > httpClientPolicy.setConnectionTimeout(10000); > > httpClientPolicy.setReceiveTimeout(10000); > > httpClientPolicy.setAllowChunking(true); > > httpClientPolicy.setMaxRetransmits(3); > > > > http.setClient(httpClientPolicy); > > > > service.ping(); > > --------------------------- > > > > It also seems like the max retransmits is ignored too.. but I can't confirm > that yet. The connection timeout is a problem because it causes errors for > our users when they have a flaky network connection, or if we have to > reload the web service for some reason (usually goes offline for 5 > seconds). This never used to be a problem for us when we used XFire, > because it would retry 3 times and had a decent timeout that was not > ignored. Is there something else I can do to fix this? It's causing quite > a few problems with users since the switch to CXF... Thanks, > > > > Kevin -- Daniel Kulp dk...@apache.org http://www.dankulp.com/blog