Hi all,
We've just re-architected our HTTP layer to be able to switch between HttpClient and the standard JRE classes as with JRE 1.5 Sun's classes now do NTLM authentication without requiring the user to be prompted (but in older JRE's it can't do NTLM at all and HttpClient provides a bunch of other benefits as well).

The biggest problem we have (and a common cause of problems for others on this list) is needing to call releaseConnection all the time. If you are reading the entire response and dealing with it in one place this is easy to take care of but if you ever need to open a HTTP connection and then pass off the input stream to various other parts of the application, this becomes a pain to manage.

With all the redesigning of HttpClient that's going on, what options do we have for removing the need for user managed calls to releaseConnection? We already release the connection automatically if the entire response stream is read and I think if the input stream is closed as well - in what situations is this not enough?

* IOException or other exception while reading from the stream. Our input stream wrapper could catch this and release the connection then rethrow the exception.

* Situations where the response from the server is discarded. This is most common with error responses from servers like 404s etc but can happen when the start of the response indicates in some software specific manner that the rest of the content is irrelevant (eg: an XML declaration that indicates that the file's version is 2.0 and not supported by the parser). I'm not sure how to deal with this case though requiring the user to close the input stream would match how input streams are normally used, avoid having to read the entire response and release the connection (the connection of course couldn't be reused by that's probably a fair trade off given the saving in not having to download the content).

What other situations are there that would need to be handled? This always seemed like a straight out required part of the architecture but it is surprisingly annoying when you try to integrate HttpClient into an application without having it pervade the entire codebase.

Am I crazy?  Thoughts?

Regards,

Adrian Sutton.





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

Reply via email to