You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by di...@apache.org on 2005/04/13 01:42:49 UTC

cvs commit: ws-axis/java/src/org/apache/axis/transport/http CommonsHTTPSender.java

dims        2005/04/12 16:42:49

  Modified:    java/src/org/apache/axis/transport/http
                        CommonsHTTPSender.java
  Log:
  oops forgot the main file
  
  Revision  Changes    Path
  1.30      +38 -34    ws-axis/java/src/org/apache/axis/transport/http/CommonsHTTPSender.java
  
  Index: CommonsHTTPSender.java
  ===================================================================
  RCS file: /home/cvs/ws-axis/java/src/org/apache/axis/transport/http/CommonsHTTPSender.java,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- CommonsHTTPSender.java	17 Mar 2005 18:12:25 -0000	1.29
  +++ CommonsHTTPSender.java	12 Apr 2005 23:42:49 -0000	1.30
  @@ -16,19 +16,19 @@
   package org.apache.axis.transport.http;
   
   import org.apache.axis.AxisFault;
  +import org.apache.axis.Constants;
   import org.apache.axis.Message;
   import org.apache.axis.MessageContext;
  -import org.apache.axis.Constants;
   import org.apache.axis.components.logger.LogFactory;
   import org.apache.axis.components.net.CommonsHTTPClientProperties;
   import org.apache.axis.components.net.CommonsHTTPClientPropertiesFactory;
   import org.apache.axis.components.net.TransportClientProperties;
   import org.apache.axis.components.net.TransportClientPropertiesFactory;
  -import org.apache.axis.encoding.Base64;
   import org.apache.axis.handlers.BasicHandler;
   import org.apache.axis.soap.SOAP12Constants;
   import org.apache.axis.soap.SOAPConstants;
   import org.apache.axis.utils.Messages;
  +import org.apache.axis.utils.NetworkUtils;
   import org.apache.commons.httpclient.Cookie;
   import org.apache.commons.httpclient.Credentials;
   import org.apache.commons.httpclient.Header;
  @@ -37,33 +37,31 @@
   import org.apache.commons.httpclient.HttpConnectionManager;
   import org.apache.commons.httpclient.HttpMethodBase;
   import org.apache.commons.httpclient.HttpState;
  +import org.apache.commons.httpclient.HttpVersion;
   import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
  -import org.apache.commons.httpclient.UsernamePasswordCredentials;
   import org.apache.commons.httpclient.NTCredentials;
  +import org.apache.commons.httpclient.UsernamePasswordCredentials;
  +import org.apache.commons.httpclient.auth.AuthScope;
   import org.apache.commons.httpclient.cookie.CookiePolicy;
   import org.apache.commons.httpclient.methods.GetMethod;
   import org.apache.commons.httpclient.methods.PostMethod;
   import org.apache.commons.httpclient.methods.RequestEntity;
  -import org.apache.commons.httpclient.HttpVersion;
   import org.apache.commons.httpclient.params.HttpMethodParams;
   import org.apache.commons.logging.Log;
   
  -import java.io.ByteArrayInputStream;
  -import java.io.ByteArrayOutputStream;
  +import javax.xml.soap.MimeHeader;
  +import javax.xml.soap.MimeHeaders;
  +import javax.xml.soap.SOAPException;
   import java.io.FilterInputStream;
  -import java.io.OutputStream;
  -import java.io.InputStream;
   import java.io.IOException;
  +import java.io.InputStream;
  +import java.io.OutputStream;
   import java.net.URL;
  -import java.util.Map;
   import java.util.Hashtable;
   import java.util.Iterator;
  +import java.util.Map;
   import java.util.StringTokenizer;
   
  -import javax.xml.soap.MimeHeader;
  -import javax.xml.soap.MimeHeaders;
  -import javax.xml.soap.SOAPException;
  -
   /**
    * This class uses Jakarta Commons's HttpClient to call a SOAP server.
    *
  @@ -91,8 +89,8 @@
       protected void initialize() {
           MultiThreadedHttpConnectionManager cm = new MultiThreadedHttpConnectionManager();
           this.clientProperties = CommonsHTTPClientPropertiesFactory.create();
  -        cm.setMaxConnectionsPerHost(clientProperties.getMaximumConnectionsPerHost());
  -        cm.setMaxTotalConnections(clientProperties.getMaximumTotalConnections());
  +        cm.getParams().setDefaultMaxConnectionsPerHost(clientProperties.getMaximumConnectionsPerHost());
  +        cm.getParams().setMaxTotalConnections(clientProperties.getMaximumTotalConnections());
           this.connectionManager = cm;
       }
       
  @@ -120,9 +118,8 @@
               // so sockets get recycled when possible.
               HttpClient httpClient = new HttpClient(this.connectionManager);
               // the timeout value for allocation of connections from the pool
  -            httpClient.setHttpConnectionFactoryTimeout(
  -                             this.clientProperties.getConnectionPoolTimeout());
  -            
  +            httpClient.getParams().setConnectionManagerTimeout(this.clientProperties.getConnectionPoolTimeout());
  +
               HostConfiguration hostConfiguration = 
                   getHostConfiguration(httpClient, msgContext, targetURL);
               
  @@ -168,7 +165,7 @@
               // overwrites the cookies from HttpState
               if (msgContext.getMaintainSession()) {
                   HttpState state = httpClient.getState();
  -                state.setCookiePolicy(CookiePolicy.COMPATIBILITY);
  +                method.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
                   String host = hostConfiguration.getHost();
                   String path = targetURL.getPath();
                   boolean secure = hostConfiguration.getProtocol().isSecure();
  @@ -343,8 +340,8 @@
                                               tcp.getProxyPassword(),
                                               tcp.getProxyHost(), domain);
                           }
  -                    }                     
  -                    client.getState().setProxyCredentials(null, null, proxyCred);
  +                    }
  +                    client.getState().setProxyCredentials(AuthScope.ANY, proxyCred);
                   }
                   int proxyPort = new Integer(tcp.getProxyPort()).intValue();
                   config.setProxy(tcp.getProxyHost(), proxyPort);
  @@ -374,9 +371,9 @@
               /* ISSUE: these are not the same, but MessageContext has only one
                         definition of timeout */
               // SO_TIMEOUT -- timeout for blocking reads
  -            httpClient.setTimeout(msgContext.getTimeout());
  -            // timeout for initial connection 
  -            httpClient.setConnectionTimeout(msgContext.getTimeout());
  +            httpClient.getHttpConnectionManager().getParams().setSoTimeout(msgContext.getTimeout());
  +            // timeout for initial connection
  +            httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(msgContext.getTimeout());
           }
           
           // Get SOAPAction, default to ""
  @@ -413,15 +410,22 @@
               }
           }
           if (userID != null) {
  -            Credentials cred = new UsernamePasswordCredentials(userID, passwd);
  -            httpClient.getState().setCredentials(null, null, cred);
  -            
  -            // The following 3 lines should NOT be required. But Our SimpleAxisServer fails
  -            // during all-tests if this is missing.
  -            StringBuffer tmpBuf = new StringBuffer();
  -            tmpBuf.append(userID).append(":").append((passwd == null) ? "" : passwd);
  -            method.addRequestHeader(HTTPConstants.HEADER_AUTHORIZATION, 
  -                                    "Basic " + Base64.encode(tmpBuf.toString().getBytes()));
  +            Credentials proxyCred =
  +                new UsernamePasswordCredentials(userID,
  +                                                passwd);
  +            // if the username is in the form "user\domain"
  +            // then use NTCredentials instead.
  +            int domainIndex = userID.indexOf("\\");
  +            if (domainIndex > 0) {
  +                String domain = userID.substring(0, domainIndex);
  +                if (userID.length() > domainIndex + 1) {
  +                    String user = userID.substring(domainIndex + 1);
  +                    proxyCred = new NTCredentials(user,
  +                                    passwd,
  +                                    NetworkUtils.getLocalHostname(), domain);
  +                }
  +            }
  +            httpClient.getState().setCredentials(AuthScope.ANY, proxyCred);
           }
           
           // Transfer MIME headers of SOAPMessage to HTTP headers. 
  @@ -688,7 +692,7 @@
           }
   
           public boolean isRepeatable() {
  -            return false;
  +            return true;
           }
   
           public void writeRequest(OutputStream out) throws IOException {