Skip to content

SSLPoolingHttpClientConnectionManagerFactory #6

@yezhaodan

Description

@yezhaodan

package com.yezhaodan;

import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLSession;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import org.apache.http.config.Registry;
import org.apache.http.config.RegistryBuilder;
import org.apache.http.conn.socket.ConnectionSocketFactory;
import org.apache.http.conn.socket.PlainConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.slf4j.LoggerFactory;

public class SSLPoolingHttpClientConnectionManagerFactory implements ServletContextListener {

static HostnameVerifier hv = new HostnameVerifier() {
	public boolean verify(String urlHostName, SSLSession session) {
		return true;
	}
};
static javax.net.ssl.SSLContext sc;
static {
	class MinTrustManager implements javax.net.ssl.TrustManager, javax.net.ssl.X509TrustManager {
		public java.security.cert.X509Certificate[] getAcceptedIssuers() {
			return null;
		}

		public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType)
				throws java.security.cert.CertificateException {
			return;
		}

		public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType)
				throws java.security.cert.CertificateException {
			return;
		}
	}
	javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[1];
	javax.net.ssl.TrustManager tm = new MinTrustManager();
	trustAllCerts[0] = tm;
	try {
		sc = javax.net.ssl.SSLContext.getInstance("SSL");
		sc.init(null, trustAllCerts, null);
		javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
		HttpsURLConnection.setDefaultHostnameVerifier(hv);
	} catch (Exception e) {
		LoggerFactory.getLogger(SSLPoolingHttpClientConnectionManagerFactory.class).error("error", e);
	}
}

public static javax.net.ssl.SSLContext getSc() {
	return sc;
}

private static SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sc, hv);

public static SSLConnectionSocketFactory getSslConnectionSocketFactory() {
	return sslConnectionSocketFactory;
}

public static PoolingHttpClientConnectionManager create() throws Exception {
	Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory> create()
			.register("http", PlainConnectionSocketFactory.INSTANCE).register("https", sslConnectionSocketFactory).build();
	return new PoolingHttpClientConnectionManager(socketFactoryRegistry);
}

public void contextInitialized(ServletContextEvent sce) {

}

@Override
public void contextDestroyed(ServletContextEvent sce) {
}

}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions