Ниже приведены мои конфигурацииSSLContextImpl не инициализируется
ява версия "1.8.0_101" Java (TM) SE Runtime Environment (сборка 1.8.0_101-b13) Java HotSpot (TM) 64-разрядного сервера VM (построить 25.101-b13, смешанный режим)
Использование Apache HTTPClient v4.4 для вызова RESTful службы, URL-адрес службы имеет действующий сертификат (SHA2)
Использование Apache HttpClient мы называем эту услугу. Ниже приведен код
private static CloseableHttpClient appHttpClient() throws Exception {
if (null != httpclient) {
return httpclient;
}
final Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder
.<ConnectionSocketFactory> create().register("http", PlainConnectionSocketFactory.INSTANCE)
.register("https", new SSLConnectionSocketFactory(trustAllSSLContext())).build();
final PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(socketFactoryRegistry);
cm.setMaxTotal(HTTP_MAX_CON);
cm.setDefaultMaxPerRoute(HTTP_CON_ROUTE);
final RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(HTTP_CON_TO)
.setConnectionRequestTimeout(HTTP_REQ_CON_TO).setSocketTimeout(HTTP_SO_TO).build();
// final SSLConnectionSocketFactory factory = new
// SSLConnectionSocketFactory(getSSLContext());
httpclient = HttpClients.custom().setConnectionManager(cm).setDefaultRequestConfig(requestConfig).build();
return httpclient;
}
public static SSLContext trustAllSSLContext() throws Exception {
if (sslContext != null) {
return sslContext;
}
sslContext = SSLContext.getInstance("TLSv1.2");
sslContext.init(null, null, null);
System.out.println(
"SSLContext :: Protocol :: " + sslContext.getProtocol() + " Provider :: " + sslContext.getProvider());
return sslContext;
}
Вызов службы не удается периодически, есть пакетный процесс, который вызывает наши услуги в цикле, скажем, 30 вызовов на услуги, поэтому некоторые из них терпят неудачу, и некоторые из них успешны, ибо не удалось мы получаем ниже исключения.
java.lang.IllegalStateException: SSLContextImpl is not initialized
at sun.security.ssl.SSLContextImpl.engineGetSocketFactory(SSLContextImpl.java:181)
at javax.net.ssl.SSLContext.getSocketFactory(SSLContext.java:294)
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.<init>(SSLConnectionSocketFactory.java:262)
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.<init>(SSLConnectionSocketFactory.java:205)
at com.wdpr.payment.helper.HttpHelper.appHttpClient(HttpHelper.java:63)
at com.wdpr.payment.helper.HttpHelper.makePostCall(HttpHelper.java:142)...
У любого есть идея, почему он прерывается для этого исключения с перерывами.
Может кто-нибудь, пожалуйста, помогите мне здесь? это происходит потому, что я заставляю TLSv1.2 соединение или что-то еще –
Можете ли вы поместить код, который вы используете для вызова 'appHttpClient()', и где вы объявляете 'sslContext'? –