2016-03-05 6 views
9

Ich habe meine restTemplate wie folgt initialisiert:Wie verwende ich sping's restTemplate mit einem Timeout, wie kann ich ein Timeout feststellen?

HttpClient httpClient = HttpClientBuilder.create().build(); 
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient); 
requestFactory.setConnectTimeout(1000); 
requestFactory.setReadTimeout(1000); 
restTemplate = new RestTemplate(requestFactory); 

und ich bin es wie so nennen:

restTemplate.getForEntity(someString, String.class, SomeHashmapWithURLParameters) 

Wie gehe ich beide Timeouts? Ich nehme an, dass eine Ausnahme ausgelöst wird? Wenn ja, welche spezifische Ausnahme kann ich fangen, um gezielt nur Timeouts zu behandeln. Ich behandle andere Ausnahmen auf verschiedene Arten.

Antwort

10

Im Fall von RestTemplate, wenn die Anforderung Zeit überschritten wird, wird Spring ResourceAccessException werfen. Die zugrunde liegende Ausnahme unter dieser Instanz ist java.net.SocketTimeoutException mit der Nachricht 'Read timed out'.

Verwandte Themen