On Tue, 2010-03-23 at 14:53 +0100, Joan Balaguero wrote:
> Hello Oleg,
> 
> Your definition of http.socket.timeout is the maximum period of inactivity 
> between two consecutive data packets.
> 

This is not my definition. I believe this is a fairly common / standard
definition of the socket timeout.

> Do you mean that, maybe, the response packets are received in long intervals 
> (always less than 60 seconds), and then the exception is not thrown but the 
> response time could take several minutes?
> 

Yes, I do.

Oleg

> Thanks,
> Joan.
> 
> -----Mensaje original-----
> De: Oleg Kalnichevski [mailto:[email protected]] 
> Enviado el: martes, 23 de marzo de 2010 14:37
> Para: HttpClient User Discussion
> Asunto: Re: Sometimes response timeout seems to not work
> 
> On Tue, 2010-03-23 at 14:31 +0100, Joan Balaguero wrote:
> > Hello,
> > 
> >  
> > 
> > We're querying  a webservice using a 'ThreadSafeClientConnManager'. 
> > 
> > Platform: windows 2003 Server 64bit
> > 
> > httpClient 4.0
> > 
> > jre 6 update 13 on Tomcat 6.0.18
> > 
> >  
> > 
> > We're setting a global response timeout with:
> > 
> > HttpParams objHttpParams = new BasicHttpParams();
> > 
> > HttpProtocolParams.setVersion(objHttpParams, HttpVersion.HTTP_1_1);
> > 
> > HttpConnectionParams.setSoTimeout(objHttpParams, responseTimeout);
> > 
> > ClientConnectionManager cm = new ThreadSafeClientConnManager(objHttpParams,
> > HttpUtils.createDefaultSchemeRegistry());
> > 
> > this.objHttp                = new DefaultHttpClient(cm, objHttpParams);
> > 
> >  
> > 
> > For every webservice call, if the response timeout (at call level) is
> > greater than 0 then:
> > 
> > if (objCall.responseTimeout != 0)
> > objPost.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,
> > objCall.responseTimeout); 
> > 
> >  
> > 
> > Then we send the request:
> > 
> > StringEntity entity = new StringEntity(request.createRequestParameters());
> > 
> > entity.setContentType(request.contentType);
> > 
> > objPost.setEntity(entity);
> > 
> >           
> > 
> > return (this.objHttp.execute(objPost));
> > 
> >  
> > 
> > And we read the response:
> > 
> > bis                          = new BufferedInputStream(entity.getContent());
> > 
> > ByteArrayOutputStream buffer = new ByteArrayOutputStream(httpOutBufferSize);
> > 
> > byte[] tmp                   = new byte[httpOutBufferSize];
> > 
> > int numBytesRead             = 0;
> > 
> >  
> > 
> > while ((numBytesRead = bis.read(tmp)) >= 0) buffer.write(tmp, 0,
> > numBytesRead);
> > 
> > bis.close();
> > 
> > bis = null;
> > 
> >  
> > 
> > 
> > 
> > Performing a thread dump, we can see many threads blocked waiting a response
> > several minutes (2,3,4 minutes) when the maximum response timeout is 60
> > seconds (at webservice and call level).
> > 
> 
> Please see definition of the socket timeout
> 
> Oleg
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
> 
> 
> No virus found in this incoming message.
> Checked by AVG - www.avg.com 
> Version: 9.0.791 / Virus Database: 271.1.1/2764 - Release Date: 03/22/10 
> 20:44:00
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
> 



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to