[
https://issues.apache.org/jira/browse/AXIS2-4898?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12964716#action_12964716
]
Chris Emerson commented on AXIS2-4898:
--------------------------------------
One more piece of information. The webapp uses Adobe Flex so I'm also
wondering if it could be the way the web.xml file is set up, mainly the
listener section?
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application
2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>BlazeDS</display-name>
<description>BlazeDS Application</description>
<!-- Http Flex Session attribute and binding listener support -->
<listener>
<listener-class>flex.messaging.HttpFlexSession</listener-class>
</listener>
<!-- MessageBroker Servlet -->
<servlet>
<servlet-name>MessageBrokerServlet</servlet-name>
<display-name>MessageBrokerServlet</display-name>
<servlet-class>flex.messaging.MessageBrokerServlet</servlet-class>
<init-param>
<param-name>services.configuration.file</param-name>
<param-value>/WEB-INF/flex/services-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MessageBrokerServlet</servlet-name>
<url-pattern>/messagebroker/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
</welcome-file-list>
<!-- for WebSphere deployment, please uncomment -->
<!--
<resource-ref>
<description>Flex Messaging WorkManager</description>
<res-ref-name>wm/MessagingWorkManager</res-ref-name>
<res-type>com.ibm.websphere.asynchbeans.WorkManager</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
-->
<error-page>
<error-code>404</error-code>
<location>/main.html</location>
</error-page>
</web-app>
> 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
> Priority: Critical
>
> 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]