使用Spring的RestTemplate时,默认的超时值是无限的。
默认情况下,RestTemplate使用SimpleClientHttpRequestFactory,然后使用HttpURLConnection。
默认情况下为HttpURLConnection的超时时间为0 - 即无限的,除非它已经被设置这些属性:
-Dsun.net.client.defaultConnectTimeout=TimeoutInMiliSec
-Dsun.net.client.defaultReadTimeout=TimeoutInMiliSec
SimpleClientHttpRequestFactory 源码。
public class SimpleClientHttpRequestFactory implements ClientHttpRequestFactory, AsyncClientHttpRequestFactory {
private static final int DEFAULT_CHUNK_SIZE = 4096;
private Proxy proxy;
private boolean bufferRequestBody = true;
private int chunkSize = 4096;
private int connectTimeout = -1;
private int readTimeout = -1;
private boolean outputStreaming = true;
private AsyncListenableTaskExecutor taskExecutor;
//...
public void setConnectTimeout(int connectTimeout) {
this.connectTimeout = connectTimeout;
}
//...
public void s

本文介绍Spring中RestTemplate默认使用SimpleClientHttpRequestFactory及其默认超时设置为无限,并展示了如何通过设置连接和读取超时来避免无限等待。
最低0.47元/天 解锁文章
3016





