axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andreas Veithen (JIRA)" <j...@apache.org>
Subject [jira] Commented: (AXIS2-4898) Thread named [MultiThreadedHttpConnectionManager cleanup] not cleaned up properly
Date Sun, 09 Jan 2011 14:10:46 GMT

    [ https://issues.apache.org/jira/browse/AXIS2-4898?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12979332#action_12979332
] 

Andreas Veithen commented on AXIS2-4898:
----------------------------------------

I was able to reproduce this using the version2 service provided by Sameera. This should be
fixed by r1056933 on the trunk. However, after stopping Axis2, the Web app class loader is
still not garbage collected. This is caused by AXIS2-4263 (confirmed; workaround available)
and AXIOM-354 (to be confirmed; no workaround available).

> Thread named [MultiThreadedHttpConnectionManager cleanup] not cleaned up properly
> ---------------------------------------------------------------------------------
>
>                 Key: AXIS2-4898
>                 URL: https://issues.apache.org/jira/browse/AXIS2-4898
>             Project: Axis2
>          Issue Type: Bug
>          Components: client-api
>    Affects Versions: 1.5.1
>         Environment: Operating system Windows and Linux
> Application Server: Tomcat 6.0.29
> Axis2 version 1.5.1
> Client created with ADB
>            Reporter: Chris Emerson
>            Assignee: Andreas Veithen
>            Priority: Critical
>         Attachments: version2.zip
>
>
> 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;
>       }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org


Mime
View raw message