[
https://issues.apache.org/jira/browse/AXIS2-4898?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12979358#action_12979358
]
Hudson commented on AXIS2-4898:
-------------------------------
Integrated in axis2-1.5 #121 (See
[https://hudson.apache.org/hudson/job/axis2-1.5/121/])
AXIS2-4898: Merged r1056933 to the 1.5 branch.
> 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: [email protected]
For additional commands, e-mail: [email protected]