Hello,

here are some more details:

Our initialization code:
------------------------------

      httpConnectionManager = new MultiThreadedHttpConnectionManager();
      HttpConnectionManagerParams params = new HttpConnectionManagerParams();
      params.setMaxTotalConnections(configuration.getMaxConnectionsPerHost());
      
params.setDefaultMaxConnectionsPerHost(configuration.getMaxConnectionsPerHost());
      httpConnectionManager.setParams(params);

      final HttpClient httpClient = new HttpClient(httpConnectionManager);
      rpcServiceClient = new RPCServiceClient();
      final Options options = rpcServiceClient.getOptions();
      final ConfigurationContext context =
rpcServiceClient.getServiceContext().getConfigurationContext();
      context.setProperty(HTTPConstants.REUSE_HTTP_CLIENT,
Constants.VALUE_TRUE);
      context.setProperty(HTTPConstants.CACHED_HTTP_CLIENT, httpClient);

      final EndpointReference targetEPR
                              = new
EndpointReference(configuration.getWebServiceEndPointAddress());
      options.setTo(targetEPR);
      options.setCallTransportCleanup(true);

The code for a web service call:
-------------------------------------------

    try {
      final QName opMethod = new QName("xxxxx", "methodName");
      final Object[] args = new Object[] { xxxx };
      final Class[] returnTypes = new Class[]{ Boolean.class };

      rpcServiceClient.invokeBlocking(opMethod, args, returnTypes);
    } catch (AxisFault af) {
      logger.error("AxisFault .....", af);
      throw buildException(af);
    }
    finally {
      cleanupTransport();
    }

where cleanupTransport() is:
---------------------------------------

  private void cleanupTransport()
  {
    AxisFault e = null;
    try {
      rpcServiceClient.cleanupTransport();
    }
    catch (AxisFault af) {
      logger.error("AxisFault cleaning up the transport", af);
      e = af;
    }
    finally {
      try {
        final MessageContext m = MessageContext.getCurrentMessageContext();
        if (m != null && m.getTransportOut() != null &&
m.getTransportOut().getSender() != null) {
          m.getTransportOut().getSender().cleanup(m);
        }
      }
      catch (AxisFault af) {
        logger.error("AxisFault cleaning up transport sender", af);
        if (e == null) {
          e = af;
        }
      }
      finally {
        try {
          rpcServiceClient.cleanup();
        }
        catch (AxisFault af) {
          logger.error("AxisFault cleaning up the client", af);
          if (e == null) {
            e = af;
          }
        }
        finally {
          httpConnectionManager.closeIdleConnections(0);
        }
      }
    }
    if (e != null) {
      throw buildException(e);
    }
  }

Do you guys see something wrong in there..?

Thank you,
Phil




On Tue, May 10, 2011 at 4:57 PM, Philippe Frangioni <[email protected]> wrote:
> Hello all,
> we're using Axis2 1.5.1. Our client makes web service calls every
> second over https (we're doing 2-way SSL). We noticed the number of
> CLOSE_WAIT connections client-side grows over time on our production
> servers...
> This bug looks related:
> https://issues.apache.org/jira/browse/AXIS2-2883
> It was fixed in 1.5.1 but maybe not for https connections: the last
> post from Glen Daniels says no testing was done for https so an issue
> could remain... so I was wondering if testing was done at some point?
> or if someone else has the same problem...?
>
> Thanks,
> Phil
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to