Author: chinthaka
Date: Thu May 10 18:08:04 2007
New Revision: 537061
URL: http://svn.apache.org/viewvc?view=rev&rev=537061
Log:
Adding a way for some one to provide their own socket factory so that it will
be used by CommonsHTTPClient to send data. This is specially useful when some
one is using SSL but not satisfied with JSSE.
Modified:
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AbstractHTTPSender.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/HTTPConstants.java
Modified:
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AbstractHTTPSender.java
URL:
http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AbstractHTTPSender.java?view=diff&rev=537061&r1=537060&r2=537061
==============================================================================
---
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AbstractHTTPSender.java
(original)
+++
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AbstractHTTPSender.java
Thu May 10 18:08:04 2007
@@ -41,6 +41,7 @@
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.auth.AuthPolicy;
import org.apache.commons.httpclient.auth.AuthScope;
+import org.apache.commons.httpclient.protocol.Protocol;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -63,10 +64,10 @@
protected String httpVersion = HTTPConstants.HEADER_PROTOCOL_11;
private static final Log log = LogFactory.getLog(AbstractHTTPSender.class);
int soTimeout = HTTPConstants.DEFAULT_SO_TIMEOUT;
-
+
protected static final String PROTOCOL_HTTP = "http";
protected static final String PROTOCOL_HTTPS = "https";
-
+
/**
* proxydiscription
*/
@@ -149,11 +150,11 @@
proxyCred = new UsernamePasswordCredentials("", "");
} else {
proxyCred = new UsernamePasswordCredentials(usrName,
- passwd); //
proxy
+ passwd); // proxy
}
} else {
proxyCred = new NTCredentials(usrName, passwd, proxyHostName,
- domain); // NTLM
authentication with additionals prams
+ domain); // NTLM authentication with additionals
prams
}
}
@@ -219,29 +220,29 @@
Object contentType = header.getValue();
Object charSetEnc = null;
-
+
for (int i = 0; i < headers.length; i++) {
NameValuePair charsetEnc = headers[i].getParameterByName(
HTTPConstants.CHAR_SET_ENCODING);
if (charsetEnc != null) {
- charSetEnc = charsetEnc.getValue();
+ charSetEnc = charsetEnc.getValue();
}
}
-
+
if (inMessageContext != null) {
inMessageContext
.setProperty(Constants.Configuration.CONTENT_TYPE,
contentType);
inMessageContext
-
.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING, charSetEnc);
+
.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING, charSetEnc);
} else {
-
- //Transport details will be stored in a HashMap so that anybody
interested can retriece them
- HashMap transportInfoMap = new HashMap ();
- transportInfoMap.put(Constants.Configuration.CONTENT_TYPE,
contentType);
-
transportInfoMap.put(Constants.Configuration.CHARACTER_SET_ENCODING,
charSetEnc);
-
- //the HashMap is stored in the outgoing message.
-
msgContext.setProperty(Constants.Configuration.TRANSPORT_INFO_MAP,
transportInfoMap);
+
+ //Transport details will be stored in a HashMap so that
anybody interested can retriece them
+ HashMap transportInfoMap = new HashMap();
+ transportInfoMap.put(Constants.Configuration.CONTENT_TYPE,
contentType);
+
transportInfoMap.put(Constants.Configuration.CHARACTER_SET_ENCODING,
charSetEnc);
+
+ //the HashMap is stored in the outgoing message.
+
msgContext.setProperty(Constants.Configuration.TRANSPORT_INFO_MAP,
transportInfoMap);
}
}
@@ -319,21 +320,29 @@
boolean isAuthenticationEnabled = isAuthenticationEnabled(msgCtx);
int port = targetURL.getPort();
- String protocal = targetURL.getProtocol();
+ String protocol = targetURL.getProtocol();
if (port == -1) {
- if (PROTOCOL_HTTP.equals(protocal)) {
+ if (PROTOCOL_HTTP.equals(protocol)) {
port = 80;
- } else if (PROTOCOL_HTTPS.equals(protocal)){
- port = 443;
+ } else if (PROTOCOL_HTTPS.equals(protocol)) {
+ port = 443;
}
-
+
}
// to see the host is a proxy and in the proxy list - available in
axis2.xml
HostConfiguration config = new HostConfiguration();
+ // one might need to set his own socket factory. Let's allow that case
as well.
+ Protocol protocolHandler = (Protocol)
msgCtx.getOptions().getProperty(HTTPConstants.CUSTOM_PROTOCOL_HANDLER);
+
// setting the real host configuration
- config.setHost(targetURL.getHost(), port, targetURL.getProtocol());
+ // I assume the 90% case, or even 99% case will be no protocol handler
case.
+ if (protocolHandler == null) {
+ config.setHost(targetURL.getHost(), port, targetURL.getProtocol());
+ } else {
+ config.setHost(targetURL.getHost(), port, protocolHandler);
+ }
if (isAuthenticationEnabled) {
// Basic, Digest, NTLM and custom authentications.
@@ -420,7 +429,7 @@
}
}
agent.getParams().setParameter(AuthPolicy.AUTH_SCHEME_PRIORITY,
- authPrefs);
+ authPrefs);
}
} else {
@@ -539,6 +548,7 @@
protected void executeMethod(HttpClient httpClient, MessageContext
msgContext, URL url,
HttpMethod method) throws IOException {
HostConfiguration config = this.getHostConfiguration(httpClient,
msgContext, url);
+
msgContext.setProperty(HTTPConstants.HTTP_METHOD, method);
// set the custom headers, if available
@@ -547,12 +557,12 @@
// add compression headers if needed
if (Utils.isExplicitlyTrue(msgContext, HTTPConstants.MC_ACCEPT_GZIP)) {
method.addRequestHeader(HTTPConstants.HEADER_ACCEPT_ENCODING,
- HTTPConstants.COMPRESSION_GZIP);
+ HTTPConstants.COMPRESSION_GZIP);
}
if (Utils.isExplicitlyTrue(msgContext, HTTPConstants.MC_GZIP_REQUEST))
{
method.addRequestHeader(HTTPConstants.HEADER_CONTENT_ENCODING,
- HTTPConstants.COMPRESSION_GZIP);
+ HTTPConstants.COMPRESSION_GZIP);
}
httpClient.executeMethod(config, method);
Modified:
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/HTTPConstants.java
URL:
http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/HTTPConstants.java?view=diff&rev=537061&r1=537060&r2=537061
==============================================================================
---
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/HTTPConstants.java
(original)
+++
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/HTTPConstants.java
Thu May 10 18:08:04 2007
@@ -488,6 +488,7 @@
public static final String CONTENT_TYPE = "Content-Type";
public static final String OMIT_SOAP_12_ACTION = "OmitSOAP12Action";
+ public static final String CUSTOM_PROTOCOL_HANDLER =
"CUSTOM_PROTOCOL_HANDLER";
/**
* Method getBytes.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]