On Mon, Dec 12, 2005 at 11:05:45AM +0530, Jaya Christina B wrote: > > Hello, > > I'm using HttpClient V2.0 on Sun Solaris/WebLogic7.0 > > The code I am using is:- > HttpClient httpClient = new HttpClient(new > MultiThreadedHttpConnectionManager()); > httpClient.getHostConfiguration().setHost(host, port); > HttpMethod httpMethod = new GetMethod(url); > httpClient.executeMethod(httpMethod); > httpMethod.releaseConnection(); > > The problem I am facing is that after around 2000 connections, this > results in java.lang.OutOfMemoryError. > > Looks like, even after call is made and finished by calling > releaseConnection() method, the thread does not get finished and keeps > on waiting forever. Hence it creates a thread every time this > functionality is called. > > The weblogic's RequestDispatcher then throws the exception: > javax.servlet.ServletException: unable to create new native thread > > I have a wrapper class to HttpClient API & create only one connection > per HttpClient object, so I think using > MultiThreadedHttpConnectionManager is NOT required. > Please could you have a look at this and let me know your thoughts on > this. Could I simply use HttpClient's default constructor without > MultiThreading? > > Thanks a lot, in advance. > > Regards, > Jaya >
Jaya Most likely you are seeing this exception because HttpClient spawns a new thread per each connection attempt. In Java prior to version 1.4 there is no way to control connection timeout using java.net.Socket API. The only possibility to unblock a thread blocked in Socket#Socket constructor is by using a controller thread. Basically you have two options: (1) Disable connection timeout by setting its value to 0. This will prevent HttpClient from spawning a controller thread per connection attempt (2) Upgrade to HttpClient 3.0, which can make use of Java 1.4 methods via reflection to control connection timeout when running in a JRE >= 1.4 Hope this helps Oleg > The logs are as follows. > -------------------------------- > ####<29-Nov-05 11:57:54 GMT> <Error> <HTTP> <btnsc003-ukbg> > <managed1_blwlp001> <ExecuteThread: '1' for queue: 'default'> <kernel > identity> > <> <101020> > <[ServletContext(id=4834778,name=btportal_webapp,context-path=/btPortal) > ] Servlet failed with Exception> > java.lang.OutOfMemoryError: unable to create new native thread > at java.lang.Thread.start(Native Method) > at > org.apache.commons.httpclient.util.TimeoutController.execute(TimeoutCont > roller.java:95) > at > org.apache.commons.httpclient.util.TimeoutController.execute(TimeoutCont > roller.java:116) > at > org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:67 > 5) > at > org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpCon > nectionAdapter.open(MultiThreadedHttpConnectionManager.ja > va:959) > at > org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:6 > 61) > at > org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:5 > 29) > at > com.bt.btcom.domain.dao.HttpClientDAO.executeMethod(HttpClientDAO.java:4 > 65) > at > com.bt.btcom.domain.dao.HttpClientDAO.executeConnection(HttpClientDAO.ja > va:308) > at > com.bt.btcom.presentation.util.tsso.BVUrlConnectionHelper.openDAOConnect > ion(BVUrlConnectionHelper.java:114) > at > com.bt.btcom.presentation.util.tsso.BVUrlConnectionHelper.getResponse(BV > UrlConnectionHelper.java:52) > at > com.bt.btcom.presentation.util.tsso.BVLoginHelper.login(BVLoginHelper.ja > va:103) > at > com.bt.btcom.presentation.util.tsso.ApplicationContext.processLogin(Appl > icationContext.java:99) > at > com.bt.btcom.presentation.util.tsso.SingleSignOn.login(SingleSignOn.java > :92) > at > com.bt.btcom.presentation.util.tsso.SSOFilter.doFilter(SSOFilter.java:14 > 5) > at > weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java: > 27) > at > weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.r > un(WebAppServletContext.java:5523) > at > weblogic.security.service.SecurityServiceManager.runAs(SecurityServiceMa > nager.java:685) > at > weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServl > etContext.java:3156) > at > weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl. > java:2506) > at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:234) > at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:210) > ####<29-Nov-05 11:57:54 GMT> <Error> <HTTP> <btnsc003-ukbg> > <managed1_blwlp001> <ExecuteThread: '1' for queue: 'default'> <kernel > identity> > <> <101107> > <[ServletContext(id=4834778,name=btportal_webapp,context-path=/btPortal) > ] Problem sending error page> > javax.servlet.ServletException: unable to create new native thread > at > weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatche > rImpl.java:327) > at > weblogic.servlet.internal.ServletResponseImpl.sendError(ServletResponseI > mpl.java:517) > at > weblogic.servlet.internal.ServletResponseImpl.sendError(ServletResponseI > mpl.java:370) > at > weblogic.servlet.internal.WebAppServletContext.handleException(WebAppSer > vletContext.java:3374) > at > weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServl > etContext.java:3202) > at > weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl. > java:2506) > at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:234) > at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:210) > > > > > > ********************************************************* > Disclaimer: > > The contents of this E-mail (including the contents of the enclosure(s) or > attachment(s) if any) are privileged and confidential material of MBT and > should not be disclosed to, used by or copied in any manner by anyone other > than the intended addressee(s). In case you are not the desired addressee, > you should delete this message and/or re-direct it to the sender. The views > expressed in this E-mail message (including the enclosure(s) or attachment(s) > if any) are those of the individual sender, except where the sender > expressly, and with authority, states them to be the views of MBT. > > This e-mail message including attachment/(s), if any, is believed to be free > of any virus. However, it is the responsibility of the recipient to ensure > that it is virus free and MBT is not responsible for any loss or damage > arising in any way from its use > > ********************************************************* > > --------------------------------------------------------------------- > 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]
