1

I'm using RestTemplate on my jsf web server, and with these configuration I often reach limit of connection to routes so soon (exp:/ap-domain/get-all).

How can I release connection to avoid limit?

This is my config class:

@Configuration
public class RestTemplateConfig {

        @Bean
        public PoolingHttpClientConnectionManager poolingHttpClientConnectionManager() {
            PoolingHttpClientConnectionManager result = new PoolingHttpClientConnectionManager();
            result.setMaxTotal(100);
            result.setDefaultMaxPerRoute(20);
            return result;
        }



        @Bean
        public CloseableHttpClient httpClient() throws KeyManagementException, NoSuchAlgorithmException, KeyStoreException {
            CloseableHttpClient result = HttpClientBuilder.create()
            .setConnectionManager(poolingHttpClientConnectionManager())
            .setDefaultRequestConfig(requestConfig())
            .setSSLSocketFactory(csf)
            .build();

    return result;
        }

        @Bean
        public RestTemplate restTemplate() throws KeyManagementException, NoSuchAlgorithmException, KeyStoreException {
            HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient());

            RestTemplate restTemplate = new RestTemplate(requestFactory);

            restTemplate.setErrorHandler(new RestResponseErrorHandler());

            List<ClientHttpRequestInterceptor> interceptors = restTemplate.getInterceptors();
            if (interceptors.isEmpty()) {
                interceptors = new ArrayList<>();
            }
            interceptors.add(new RestTemplateHeaderInterceptor());
            restTemplate.setInterceptors(interceptors);

            return restTemplate;
        }
    }

My RestUtil to call api:

@Component
public class RestUtil {

    private static RestTemplate restTemplate;

    @Autowired
    public RestUtil(RestTemplate restTemplate) {
        RestUtil.restTemplate = restTemplate;
    }

    public static <T> MessagesResponse<T> exchange(String url, HttpMethod method, Object requestObject, String token, ParameterizedTypeReference<MessagesResponse<T>> type) {

        ...
    }
}
phucvm8x
  • 23
  • 2
  • 6

0 Answers0