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]