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

Thread named [MultiThreadedHttpConnectionManager cleanup] not cleaned up properly

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Critical
    • Resolution: Fixed
    • 1.5.1
    • 1.5.5, 1.6.0
    • client-api
    • None
    • 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

        1. version2.zip
          47 kB
          Sameera Jayasoma

        Activity

          People

            veithen Andreas Veithen
            emo7874 Chris Emerson
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: