यह वह जगह है मैं यह कैसे org.apache.httpcomponents के httpclient v4.3 +
private HttpClientConnectionManager createConnectionManager(final SSLContext ctx) {
LOG.info("Creating sslConnectionSocketFactory");
final SSLConnectionSocketFactory sslSF = new SSLConnectionSocketFactory(ctx) {
@Override
protected void prepareSocket(SSLSocket socket) throws IOException {
try {
System.out.println("************ setting socket HOST property *************");
PropertyUtils.setProperty(socket, HOST, Constants.SNI_HOST);
} catch (IllegalAccessException | NoSuchMethodException | InvocationTargetException ex) {
LOG.error(ex.getMessage());
}
super.prepareSocket(socket);
}
};
LOG.info("Creating connectionRegistry");
final Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>create()
.register("https", sslSF)
.build();
LOG.info("Creating poolingConnectionManager");
final PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(registry);
connectionManager.setDefaultMaxPerRoute(MAX_CONNECTIONS_PER_ROUTE);
connectionManager.setMaxTotal(MAX_CONNECTIONS);
return connectionManager;
}
में किया था और यह मैं कैसे बनाया HttpClient
final KeyManager[] keyManagers = createKeyManagers();
final TrustManager[] trustManagers = createTrustManagers();
final SSLContext ctx = createSslContext(keyManagers, trustManagers);
final HttpClientConnectionManager connectionManager = createConnectionManager(ctx);
LOG.info("Creating httpClient");
HttpClient httpClient = HttpClients
.custom()
.setConnectionManager(connectionManager)
.build();
यह अभी तय है, HttpComponents HttpClient 4.3.2 में उपलब्ध है। –
ओपनजेडीके पर टॉमकैट में एचटीपी क्लाइंट 4.3.2 का उपयोग (संस्करण '1.7.0_111' तक), एसएनआई अभी भी असफल हो जाएगा। ओरेकल हॉटस्पॉट ('1.7.0_80') पर स्विच करने के बाद, एसएनआई ने काम किया। एडब्ल्यूएस बीनस्टॉक पर इसका सामना करने वाले किसी भी व्यक्ति के लिए, जेवीएम को ओरेकल में स्विच करने के लिए इस एबेक्स्टेंशन को देखें: https://gist.github.com/bremeld/6706980 – Sitati