2016-03-05 43 views
9

Ho inizializzato il mio restTemplate come segue:Utilizzo di restTemplate di sping con un timeout, come posso rilevare un timeout?

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

e sto chiamando in questo modo:

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

Come faccio a gestire entrambi i timeout? Presumo che verrà lanciata un'eccezione? In tal caso, quale eccezione specifica posso rilevare, al fine di gestire specificamente solo i timeout. Sto gestendo altre eccezioni in modi diversi.

risposta

10

In caso di RestTemplate, quando la richiesta viene scaduta, Spring lancerà ResourceAccessException. Un'eccezione sottostante sotto quell'istanza sarà java.net.SocketTimeoutException con messaggio 'Leggi scaduto'.