By default Axis uses HTTPSender as the client-side HTTP transport. That implementation doesn't support keep-alive connections (i.e. connection pooling). Axis also ships a HTTP transport based on Commons HttpClient. This implementation supports connection pooling, but imposes additional requirements on application code, in particular that the service locator must be instantiated only once (for more information, see the AxisCommonsHTTP how-to). This means that it is not always possible to use it as a drop-in replacement for the default HTTPSender and that it may require changes to the application code.

To overcome this issue, Axis 1.4.1 introduces another client-side HTTP transport which is based on the java.net.HttpURLConnection API. This API built into the Java runtime supports keep-alive connections. Since there is a single connection pool managed by the JRE, all Axis stubs can take advantage of it, regardless of how service locators are instantiated. This means that this transport doesn't impose additional requirements on application code and can be used as a drop-in replacement of the default HTTPSender. However, it only works with Java 1.5 or higher because it relies on features of the java.net.HttpURLConnection API that were not available in earlier Java versions.

To use the java.net based HTTP transport, add axis-rt-transport-http-javanet-1.4.1-SNAPSHOT.jar to the class path. If you are using the default client configuration, it will be configured automatically. If you provide your own custom client configuration WSDD file, then configure the pivot handler for the http transport as shown in the following sample:

<deployment name="testClientConfig"
            xmlns="http://xml.apache.org/axis/wsdd/"
            xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
   <globalConfiguration>
       <parameter name="disablePrettyXML" value="true"/>
       <parameter name="enableNamespacePrefixOptimization" value="false"/>
   </globalConfiguration>
   <transport name="http" pivot="java:org.apache.axis.transport.http.javanet.JavaNetHTTPSender"/>
</deployment>