Frühjahr RestTemplate - release-Verbindung?
Dies ist meine Konfiguration für die Rest-Vorlage,
@Bean
@Qualifier("myRestService")
public RestTemplate createRestTemplate(@Value("${connection.timeout}") String maxConn) {
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
connectionManager.setMaxTotal(maxTotalConn);
connectionManager.setDefaultMaxPerRoute(maxPerChannel);
RequestConfig config = RequestConfig.custom().setConnectTimeout(100000).build();
CloseableHttpClient httpClient = HttpClientBuilder.create().setConnectionManager(connectionManager)
.setDefaultRequestConfig(config).build();
ClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(httpClient);
RestTemplate restTemplate = new RestTemplate(factory);
restTemplate.setErrorHandler(new RestResponseErrorHandler());
restTemplate.setMessageConverters(createMessageConverters());
return restTemplate;
}
Bin mit PoolingHttpClientConnectionManager für die Verwaltung der verbindungen.
Sein, auf die zugegriffen wird, indem Sie den folgenden code,
ResponseEntity<String> response = restClient.exchange( url, HttpMethod.GET, entity , String.class );
Brauche ich, um die Verbindung zu lösen, nachdem Sie die oben genannten Aufruf-oder ist es berücksichtigt RestTemplate. Wenn wir aufpassen müssen auf die Freigabe der Verbindung.
Bitte kann jemand erklären/zeigen, wie die Freigabe der Verbindung.
InformationsquelleAutor Umar | 2016-10-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie erklären, die ClientHttpRequestFactory wie eine Bohne. Durch die Deklaration als eine Bohne, es wird verwaltet von der Spring-bean-Fabrik, die ruft dann die factory-Methode destroy, wenn die Anwendung geschlossen ist, oder der Bohne geht out of scope. Die destroy-Methode des ClientHttpRequestFactory wird in der Nähe der zugrunde liegenden ClientConnectionManager connection pool. Sie können überprüfen, dass die Spring-API-docs.
Dann können Sie diese bean zu erstellen Sie Ihre RestTemplate:
InformationsquelleAutor Wilco Greven
Sich die Frage, was du gefragt hast:
Brauche ich, um die Verbindung zu lösen, nachdem Sie die oben genannten Aufruf-oder ist es berücksichtigt RestTemplate. Wenn wir aufpassen müssen auf die Freigabe der Verbindung.
Nein, Sie brauchen nicht, um die Verbindung zu schließen, auf die Antwort, wenn Sie resttemplate.
Aus der apache httpclient, die Sie benötigen, zu konsumieren, die complete response (EntityUtils.verbrauchen(HttpEntity) und in der Nähe der Antwort.
Dies kann überprüft werden, in der ClientConnectionRelease.java
Aber RestTemplate wird dies für Sie zu überprüfen, haben einen Blick in
RestTemplate.java
Suchen Methode
Antwort-wo extractor erledigt die Arbeit für Sie durch den Verzehr die Antwort mit
responseExtractor.extractData(Antwort);
Und nach dem extrahieren der Daten vollständig ist, schließen Antwort.close () - als gut.
InformationsquelleAutor Deepak Singhvi