Thanks for your help. My somewhat obvious follow-up question is: Can I control this timeout? It doesn't look like HttpConnectionManagerParams has a property for this. The only timeouts that are mentioned explicitly is the connection timeout and the socket timeout (and the Linger I guess, if you count this). While it is blocked, will PostMethod.abort() unblock it?
Mark -----Original Message----- From: Oleg Kalnichevski [mailto:[EMAIL PROTECTED] Sent: Sunday, September 17, 2006 2:14 PM To: HttpClient User Discussion Subject: Re: Using a connection directly from theMultiThreadedHttpConnectionManager On Fri, 2006-09-15 at 08:49 -0400, Mark Claassen wrote: > I have been using the HttpClient for a while now and really like it. > However, I noticed the other day that I was doing the pooling incorrectly. > I was working on it when I got a bit confused. > > Since I was used to using the java.net.* stuff, I took that approach > and got an HttpConnection from the connection manager. Once I got the > connection, I made the transaction and then released the connection. > The algorithm I was using was basically like this: > > connection = > httpClient.getHttpConnectionManager().getConnectionWithTimeout(httpCli > ent.ge > tHostConfiguration(),30000); > post = new PostMethod(...) > post.execute(httpClient.getState(),connection); > ... > connection.releaseConnection(); > > However, this didn't really work at all. My application would just > hang for long periods and then I would get socket errors. Since then > I switched to using the same algorithm as in the examples and everything works great. > > post = new PostMethod() > httpClient.executeMethod(post); > post.releaseConnection(); > > Was there something wrong with getting the connection first? Mark, There's nothing wrong with acquiring a connection from the connection manager. The trouble is that a lot of HTTP protocol logic is encapsulated in the HttpClient class and is not executed if one is using HttpConnection directly. > Also, is the HttpConnectionManagerParams.setConnectionTimeout(xxx) the > same as HttpConnecitonManager.getConnectionWithTimeout(xxx)? > Not really. The first timeout value determines the maximum connect time (how long HttpClient can spend blocked waiting for a new connection to be established). The latter value is the time HttpClient can spend blocked waiting for an _existing_ connection to be acquired from the pool Hope this helps Oleg > Thanks, > Mark > > > --------------------------------------------------------------------- > 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]
