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

Connection cannot be cleaned up after 404 response

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 1.5.4
    • 1.5.6, 1.6.1, 1.7.0
    • transports
    • None
    • Axis 1.5.4, Tomcat 6.0

    Description

      I am using the WSDL2Java client stub classes to make a web service call via POST. When the server responds with certain error codes (401 and 404 are the two I have encountered) the connection is not cleaned up. So after 2 error responses are received, all future connection attempts will time out. This is the stack trace received on the 3rd call:

      org.apache.commons.httpclient.ConnectionPoolTimeoutException: Timeout waiting for connection
      at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager.doGetConnection(MultiThreadedHttpConnectionManager.java:497)
      at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager.getConnectionWithTimeout(MultiThreadedHttpConnectionManager.java:416)
      at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:153)
      at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
      at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:346)
      at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:557)
      at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:199)
      at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:76)
      at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:400)
      at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:225)
      at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:438)
      at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:402)
      at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
      at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
      at com.micropact.entellitrak.services.client.stub.ConfigurationWebServiceStub.getTrackingConfig(ConfigurationWebServiceStub.java:393)
      at com.micropact.entellitrak.services.client.ConfigurationWebClient.importTrackingConfig(ConfigurationWebClient.java:114)
      at com.micropact.entellitrak.cfg.service.ConfigurationUtilitiesService.updateConfigurationFromWeb(ConfigurationUtilitiesService.java:61)
      at com.micropact.entellitrak.cfg.controller.action.ConfigurationUtilitiesAction.webUpdateConfiguration(ConfigurationUtilitiesAction.java:277)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      at java.lang.reflect.Method.invoke(Unknown Source)
      at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:274)
      at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:194)
      at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
      at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
      at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
      at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      at com.micropact.entellitrak.web.filter.AuthenticationFilter.continueProcessing(AuthenticationFilter.java:248)
      at com.micropact.entellitrak.web.filter.AuthenticationFilter.doFilter(AuthenticationFilter.java:131)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      at com.micropact.entellitrak.web.filter.CacheFilter.doFilter(CacheFilter.java:108)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      at com.micropact.entellitrak.web.filter.TrackingStateFilter.doFilter(TrackingStateFilter.java:88)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      at com.micropact.entellitrak.web.filter.ConcurrentUserFilter.doFilter(ConcurrentUserFilter.java:111)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
      at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
      at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
      at java.lang.Thread.run(Unknown Source)

      To reproduce: On the client side, set an incorrect URL for your server address, and attempt to call the web service several times. The first few will correctly receive a 404 response, but subsequent calls will result in a timeout error.

      Possible cause: In the handleResponse() method of org.apache.axis2.transport.http.HTTPSender, the HttpMethod is not saved in the MessageContext for 401 or 404 responses. So later calling service.cleanupTransport() has no effect.

      Attachments

        Activity

          People

            veithen Andreas Veithen
            cwalsh Claire Walsh
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: