Reputation: 424
I am using RestTemplate with ConnectionPooling using PoolingHttpClientConnectionManager as in below code :
PoolingHttpClientConnectionManager connectionManager = new
PoolingHttpClientConnectionManager();
connectionManager.setMaxTotal(DEFAULT_MAX_TOTAL_CONNECTIONS);
connectionManager.setDefaultMaxPerRoute(DEFAULT_MAX_CONNECTIONS_PER_ROUTE);
connectionManager.setMaxPerRoute(new HttpRoute(new
HttpHost(excConfig.getImsServerEndpoint())), IMS_ROUTE_MAX_CONNECTIONS);
CloseableHttpClient httpclient = HttpClients.custom().setConnectionManager(connectionManager).build();
HttpComponentsClientHttpRequestFactory httpReqFactory = new HttpComponentsClientHttpRequestFactory(httpclient);
httpReqFactory.setReadTimeout(DEFAULT_HTTP_TIMEOUT_MILLISECONDS);
httpReqFactory.setConnectionRequestTimeout(DEFAULT_HTTP_TIMEOUT_MILLISECONDS);
httpReqFactory.setConnectTimeout(DEFAULT_HTTP_TIMEOUT_MILLISECONDS);
restTemplate = new RestTemplate(httpReqFactory);
Does RestTemplate take care of terminating stale connections by itself? Or do I need to put in some specific handling for the same?
Upvotes: 3
Views: 12782
Reputation: 321
setStaleConnectionCheckEnabled
has become obsolete.
HttpClients.custom()
.setDefaultRequestConfig(RequestConfig.custom().setStaleConnectionCheckEnabled(true))
.setConnectionManager(connectionManager)
.build();
In HttpClient 4.5.3 the below code works -
PoolingHttpClientConnectionManager connManager
= new PoolingHttpClientConnectionManager();
connManager.setValidateAfterInactivity(20);
HttpClient httpClient = HttpClients.custom().setConnectionManager(connManager).build();
Upvotes: 2
Reputation: 1850
By default it does not, but you can configure it easily in your CloseableHttpClient
configuration.
CloseableHttpClient httpclient = HttpClients.custom()
.setDefaultRequestConfig(RequestConfig.custom().setStaleConnectionCheckEnabled(true))
.setConnectionManager(connectionManager)
.build();`
Source here.
Upvotes: 2