[ 
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]

Reply via email to