On Wed, Dec 14, 2005 at 01:33:30PM -0500, Satsangi, Vivek  wrote:
> Hello Oleg and others,
>       Suppose I have the following basic code structure:
> 
> Init() {
>       // Create a new MultiThreadHTTPConnectionManager if one does not
> exist()
>       // Create an HTTPClient if one does not exist()
> }
> 
> HandleRequest() {
>       // Create new method
>       try{
>               // Execute the method, without Connection:Close set
>       }
>       catch (IOException e) {
>               // WANT TO CLOSE THE CONNECTION, because of the error
>       } 
>       catch (HTTPException h) {
>               // WANT TO CLOSE THE CONNECTION, because of the error
>       }  
>       finally {
>               method.releaseConnection();
>       }
> 
> 
> Where I say WANT TO CLOSE THE CONNECTION, would the following suffice?
> 
>       method.setConnectionCloseForced();
>       method.responseBodyConsumed();
> 

All this is not necessary. HttpClient automatically closes the
connection which caused an exception

See for yourself:
http://jakarta.apache.org/commons/httpclient/xref/org/apache/commons/httpclient/HttpMethodDirector.html#445

Hope this helps

Oleg

> 
> Thanks or your guidance,
> 
> Vivek
> -----Original Message-----
> From: Oleg Kalnichevski [mailto:[EMAIL PROTECTED] 
> Sent: Wednesday, December 14, 2005 4:17 AM
> To: [email protected]
> Subject: Re: Flushing the response upon IO error
> 
> On Tue, Dec 13, 2005 at 02:31:37PM -0500, Satsangi, Vivek  wrote:
> > We are using http-client inside a servlet running on the SUNOne
> > webserver, JVm version 1.4.2_06. The servlet acts like a reverse proxy
> > for a web-exposed application.
> > 
> > One user can only access the http client connection object once at a
> > time. For this reason, I thought that we don't need to use the
> > multi-threaded connection manager. However, we see some errors where
> the
> > contents of the wire are "mangled" -- e.g. the http status line is not
> > found, partial http, etc. 
> > 
> > Question 1. Does the connection manager have some sort of class-level
> > statics that are used to maintain the list of connections so that even
> > though the users' sessions should not be able to "see" each others'
> > connection objects, somehow the connection object are ending up
> getting
> > shared?
> > 
> > We occasionally get some sort of I/O error when trying to do an https
> > connection to the back end. Once a connection gets such an error, the
> > error "stays", so that subsequent connections will not find the HTTP
> in
> > the status line, etc. Because of this, I switched to using http
> instead,
> > and setting the Connection: close header. This would cause fairly bad
> > performance if we were using https, obviously.
> > 
> > Question 2: Suppose I get an IO error when executing the method. Is
> > there a way to tell the connection manager to close *this* connection
> > (and create new ones as necessary) so that the error at least does not
> > "propogate"? Alternately, can I somehow flush the response object /
> > response body stream so that the next connection will be "fresh"?
> > 
> > 
> > Thanks for any guidance you are able to give me.
> > 
> 
> Vivek,
> 
> HTTP connection managers are not aware of the concept of a user or a
> user session. HTTP connection managers assign connections based on the
> combination of the following attributes: host name, port, local address,
> proxy host, proxy port. 
> 
> If your application executes HTTP methods from multiple threads using 
> the same connection manager / HttpClient instance, you MUST ensure that 
> access to the underlying HTTP connection objects is synchronized
> 
> The simple connection manager used by HttpClient per default is NOT
> threading-safe. This pretty much explains the problems you are seeing.
> Consider using the multithreaded connection manager instead
> 
> Hope this helps
> 
> Oleg
> 
> > Vivek Satsangi
> 
> ---------------------------------------------------------------------
> 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]
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to