On Fri, 2007-03-23 at 11:58 +0100, Cordes, Hans-Dieter wrote: > Hello, > > usually there is only one Servlet object instance in a Servlet container, > however, I assume that the code you have showed "lives" in one of the > "doGet()/doPost()" etc. Servlet methods. Keep in mind that the Servlet's code > is called in a multithreaded way, so at the same time there can be several > running "doGet()/doPost()" etc methods, and each of them has its own stack, > and on that stack you create different "HttpClient" objects that in turn have > there own "MultiThreadedHttpConnectionManager()" object. You limit the > maxConnection to 1, but that does not have any effect in this context. > > What you probably need is a static "HttpClient" object in your Servlet that > does your communication. But keep in mind to "synchronize" access to it! (I > have, however, no idea whether this can really work depending on your needs.) >
Sharing HttpClient instance between multiple worker threads is indeed the way to go. HttpClient is perfectly thread-safe when used with multithreaded HTTP connection manager. No additional synchronization is necessary. Oleg > Regards, > Hans-Dieter Cordes > > -----Original Message----- > From: sebb [mailto:[EMAIL PROTECTED] > Sent: Freitag, 23. März 2007 11:43 > To: HttpClient User Discussion > Subject: Re: PROBLEM WITH setMaxTotalConnections > > Surely if you make 10 requests to the servlet there will be 10 servlet > instances? > > It looks like each has its own connection manager ... > > On 23/03/07, Joan Balagueró <[EMAIL PROTECTED]> wrote: > > Hi, > > > > > > > > I'm trying to limit the total number of http connections in my > > httpclient instance. I'm using a multithreaded http connection > > manager. The code is the > > following: > > > > > > > > HttpClient objHttp = new HttpClient(new > > MultiThreadedHttpConnectionManager()); > > > > > > objHttp.getHttpConnectionManager().getParams().setMaxTotalConnections( > > 1); > > > > > > objHttp.getHttpConnectionManager().getParams().setConnectionTimeout(co > > nnecti > > onTimeout); > > > > > > objHttp.getHttpConnectionManager().getParams().setSoTimeout(responseTi > > meout) > > ; > > > > > > objHttp.getHttpConnectionManager().getParams().setStaleCheckingEnabled > > (true) > > ; > > > > objHttp.getParams().setCookiePolicy(CookiePolicy.RFC_2109); > > > > > > > > This is part of a servlet that receives a request and sends an http > > request to another server using this httpclient. As you can see, I'm > > limiting the total number to 1 in order to make a test. > > > > > > > > But, if I send to this servlet many simultaneous requests (10 or > > more), no errors happens and httpclient opens 10 (or more) http > > connections, ignoring my limit of 1. > > > > > > > > I suppose that I'm misunderstanding something, but I don't know what. > > Can anybody help me? > > > > > > > > Thanks, > > > > > > > > Joan. > > > > > > --------------------------------------------------------------------- > 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]
