Uploaded image for project: 'Axis2'
  1. Axis2
  2. AXIS2-4898

Thread named [MultiThreadedHttpConnectionManager cleanup] not cleaned up properly

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: 1.5.1
    • Fix Version/s: 1.5.5, 1.6.0
    • Component/s: client-api
    • Labels:
      None
    • Environment:
      Operating system Windows and Linux
      Application Server: Tomcat 6.0.29
      Axis2 version 1.5.1
      Client created with ADB

      Description

      Shutting down Tomcat 6.0.29 gives the following error:

      Nov 23, 2010 4:42:18 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
      SEVERE: A web application appears to have started a thread named [MultiThreadedHttpConnectionManager cleanup] but has failed to stop it. This is very likely to create a memory leak.

      This error only happens when one of our Axis2 web services is called through a generated ADB client stub. It appears to never close this thread.

      Our current configuration on the web application:

      /**

      • The configureServiceStub method sets the web service client settings and
      • for the web service call.
      • @param params WebServiceParameters
      • @throws Exception
        */
        private void configureServiceStub(WebServiceParameters params) throws Exception
        {
        // check if connection manager already established
        if(connectionManager == null) { connectionManager = new MultiThreadedHttpConnectionManager(); connectionManagerParams = new HttpConnectionManagerParams(); connectionManagerParams.setDefaultMaxConnectionsPerHost(2); connectionManagerParams.setTcpNoDelay(true); connectionManagerParams.setStaleCheckingEnabled(true); connectionManagerParams.setLinger(0); connectionManager.setParams(connectionManagerParams); httpClient = new HttpClient(connectionManager); configcontext = ConfigurationContextFactory.createDefaultConfigurationContext(); configcontext.setThreadPool(new ThreadPool(1, 3)); configcontext.setProperty(HTTPConstants.REUSE_HTTP_CLIENT, Boolean.TRUE); configcontext.setProperty(HTTPConstants.CACHED_HTTP_CLIENT, httpClient); configcontext.setProperty(HTTPConstants.AUTO_RELEASE_CONNECTION, httpClient); }

      if(employeeStub == null)

      { employeeStub = new EmployeeServiceSMARTStub(configcontext, params.getLocalServiceUrl() + "EmployeeServiceSMART.EmployeeServiceSMARTHttpSoap12Endpoint/"); employeeStub._getServiceClient().getOptions().setTimeOutInMilliSeconds(2 * 60 * 1000); employeeStub._getServiceClient().getOptions().setProperty(HTTPConstants.SO_TIMEOUT, 30000); employeeStub._getServiceClient().getOptions().setProperty(HTTPConstants.CONNECTION_TIMEOUT, 30000); employeeStub._getServiceClient().getOptions().setProperty(HTTPConstants.REUSE_HTTP_CLIENT, Boolean.TRUE); employeeStub._getServiceClient().getOptions().setProperty(HTTPConstants.AUTO_RELEASE_CONNECTION, Boolean.TRUE); employeeStub._getServiceClient().getOptions().setProperty(HTTPConstants.CHUNKED, Boolean.TRUE); employeeStub._getServiceClient().getOptions().setCallTransportCleanup(true); employeeStub._getServiceClient().getOptions().setProperty(HTTPConstants.HTTP_PROTOCOL_VERSION, HTTPConstants.HEADER_PROTOCOL_10); }

      }

      After each call we call the following code:

      finally
      {
      // clean up all hanging threads and stop connection manager
      if(employeeStub._getServiceClient() != null)
      {
      try

      { employeeStub._getServiceClient().cleanupTransport(); }

      catch(Exception e)

      { e.printStackTrace(); }

      try
      { employeeStub._getServiceClient().cleanup(); employeeStub.cleanup(); }
      catch(Exception e)
      { e.printStackTrace(); }

      }

      connectionManager.closeIdleConnections(0);
      connectionManager.shutdown();
      connectionManager = null;
      employeeStub = null;
      }

        Attachments

          Activity

            People

            • Assignee:
              veithen Andreas Veithen
              Reporter:
              emo7874 Chris Emerson

              Dates

              • Created:
                Updated:
                Resolved:

                Issue deployment