You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2012/03/09 21:42:32 UTC
svn commit: r1299041 - in /httpcomponents/httpclient/trunk:
fluent-hc/src/main/java/org/apache/http/client/fluent/Executor.java
httpclient/src/main/java/org/apache/http/conn/ssl/SSLSocketFactory.java
Author: olegk
Date: Fri Mar 9 20:42:32 2012
New Revision: 1299041
URL: http://svn.apache.org/viewvc?rev=1299041&view=rev
Log:
Better SSL initialization for fluent Executor
Modified:
httpcomponents/httpclient/trunk/fluent-hc/src/main/java/org/apache/http/client/fluent/Executor.java
httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/conn/ssl/SSLSocketFactory.java
Modified: httpcomponents/httpclient/trunk/fluent-hc/src/main/java/org/apache/http/client/fluent/Executor.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/fluent-hc/src/main/java/org/apache/http/client/fluent/Executor.java?rev=1299041&r1=1299040&r2=1299041&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/fluent-hc/src/main/java/org/apache/http/client/fluent/Executor.java (original)
+++ httpcomponents/httpclient/trunk/fluent-hc/src/main/java/org/apache/http/client/fluent/Executor.java Fri Mar 9 20:42:32 2012
@@ -27,6 +27,10 @@
package org.apache.http.client.fluent;
import java.io.IOException;
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
+
+import javax.net.ssl.SSLContext;
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
@@ -41,28 +45,44 @@ import org.apache.http.client.Credential
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.client.protocol.ClientContext;
+import org.apache.http.conn.scheme.PlainSocketFactory;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
+import org.apache.http.conn.scheme.SchemeSocketFactory;
import org.apache.http.conn.ssl.SSLInitializationException;
+import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.impl.auth.BasicScheme;
import org.apache.http.impl.client.BasicAuthCache;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.conn.PoolingClientConnectionManager;
-import org.apache.http.impl.conn.SchemeRegistryFactory;
import org.apache.http.protocol.BasicHttpContext;
public class Executor {
final static PoolingClientConnectionManager CONNMGR;
final static DefaultHttpClient CLIENT;
-
+
static {
- SchemeRegistry schemeRegistry;
+ SchemeRegistry schemeRegistry = new SchemeRegistry();
+ SchemeSocketFactory plain = PlainSocketFactory.getSocketFactory();
+ schemeRegistry.register(new Scheme("http", 80, plain));
+ SchemeSocketFactory ssl = null;
try {
- schemeRegistry = SchemeRegistryFactory.createSystemDefault();
+ ssl = SSLSocketFactory.getSystemSocketFactory();
} catch (SSLInitializationException ex) {
- schemeRegistry = SchemeRegistryFactory.createDefault();
+ SSLContext sslcontext;
+ try {
+ sslcontext = SSLContext.getInstance(SSLSocketFactory.TLS);
+ sslcontext.init(null, null, null);
+ ssl = new SSLSocketFactory(sslcontext);
+ } catch (SecurityException ignore) {
+ } catch (KeyManagementException ignore) {
+ } catch (NoSuchAlgorithmException ignore) {
+ }
+ }
+ if (ssl != null) {
+ schemeRegistry.register(new Scheme("https", 443, ssl));
}
CONNMGR = new PoolingClientConnectionManager(schemeRegistry);
CONNMGR.setDefaultMaxPerRoute(100);
Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/conn/ssl/SSLSocketFactory.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/conn/ssl/SSLSocketFactory.java?rev=1299041&r1=1299040&r2=1299041&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/conn/ssl/SSLSocketFactory.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/conn/ssl/SSLSocketFactory.java Fri Mar 9 20:42:32 2012
@@ -171,7 +171,7 @@ public class SSLSocketFactory implements
*
* @return the default SSL socket factory
*/
- public static SSLSocketFactory getSocketFactory() {
+ public static SSLSocketFactory getSocketFactory() throws SSLInitializationException {
return new SSLSocketFactory(createDefaultSSLContext());
}
@@ -200,7 +200,7 @@ public class SSLSocketFactory implements
*
* @return the system SSL socket factory
*/
- public static SSLSocketFactory getSystemSocketFactory() {
+ public static SSLSocketFactory getSystemSocketFactory() throws SSLInitializationException {
return new SSLSocketFactory(createSystemSSLContext());
}
@@ -353,7 +353,7 @@ public class SSLSocketFactory implements
return sslcontext;
}
- private static SSLContext createDefaultSSLContext() {
+ private static SSLContext createDefaultSSLContext() throws SSLInitializationException {
try {
return createSSLContext(TLS, null, null, null, null, null);
} catch (Exception ex) {
@@ -361,7 +361,7 @@ public class SSLSocketFactory implements
}
}
- private static SSLContext createSystemSSLContext() {
+ private static SSLContext createSystemSSLContext() throws SSLInitializationException {
try {
return createSystemSSLContext(TLS, null);
} catch (Exception ex) {