我创建了一个带有连接池和 ssl 上下文作为 Bean 的休息模板..但是我有一个已过期的证书..所以需要在证书过期之前再次设置 ssl 上下文..
因为我需要连接池..我不想每次都创建休息模板..有什么关于如何做到这一点的建议吗?
@Bean
public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) {
SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(getsslContext()); //need to update ssl context dynamically
PoolingHttpClientConnectionManager connectionManager =
PoolingHttpClientConnectionManagerBuilder.create()
.setSSLSocketFactory(socketFactory)
.build();
connectionManager.setMaxTotal(30);
connectionManager.setDefaultMaxPerRoute(10);
RequestConfig requestConfig =
RequestConfig.custom()
.setResponseTimeout(Timeout.ofSeconds(5))
.setConnectionRequestTimeout(Timeout.ofSeconds(2))
.build();
HttpClient httpClient =
HttpClientBuilder.create()
.setConnectionManager(connectionManager)
.setDefaultRequestConfig(requestConfig)
.build();
ClientHttpRequestFactory requestFactory =
new HttpComponentsClientHttpRequestFactory(httpClient);
return restTemplateBuilder.requestFactory(() -> requestFactory).build();
}
您可以尝试直接将 sslSocketFactory 设置为 HttpClient
HttpClients.custom()
.setSSLSocketFactory(socketFactory)
//...
.build();