Customize connection request timeout
Prior to this commit it was not possible to easily customize the connection request timeout used by the HttpClient. Both `HttpComponentsClientHttpRequestFactory` and `HttpComponentsClientHttpRequestFactoryTests` have been updated to support a `connectionRequestTimeout` property. Issue: SPR-12166
This commit is contained in:
@@ -61,6 +61,8 @@ public class HttpComponentsClientHttpRequestFactory implements ClientHttpRequest
|
||||
|
||||
private int connectTimeout;
|
||||
|
||||
private int connectionRequestTimeout;
|
||||
|
||||
private int socketTimeout;
|
||||
|
||||
private boolean bufferRequestBody = true;
|
||||
@@ -139,6 +141,16 @@ public class HttpComponentsClientHttpRequestFactory implements ClientHttpRequest
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the timeout in milliseconds used when requesting a connection from the connection
|
||||
* manager using the underlying HttpClient.
|
||||
* A timeout value of 0 specifies an infinite timeout.
|
||||
* @param connectionRequestTimeout the timeout value to request a connection in milliseconds
|
||||
*/
|
||||
public void setConnectionRequestTimeout(int connectionRequestTimeout) {
|
||||
this.connectionRequestTimeout = connectionRequestTimeout;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the socket read timeout for the underlying HttpClient.
|
||||
* A timeout value of 0 specifies an infinite timeout.
|
||||
@@ -193,9 +205,10 @@ public class HttpComponentsClientHttpRequestFactory implements ClientHttpRequest
|
||||
config = ((Configurable) httpRequest).getConfig();
|
||||
}
|
||||
if (config == null) {
|
||||
if (this.socketTimeout > 0 || this.connectTimeout > 0) {
|
||||
if (this.connectTimeout > 0 || this.connectionRequestTimeout > 0 || this.socketTimeout > 0) {
|
||||
config = RequestConfig.custom()
|
||||
.setConnectTimeout(this.connectTimeout)
|
||||
.setConnectionRequestTimeout(this.connectionRequestTimeout)
|
||||
.setSocketTimeout(this.socketTimeout)
|
||||
.build();
|
||||
}
|
||||
|
||||
@@ -70,6 +70,7 @@ public class HttpComponentsHttpInvokerRequestExecutor extends AbstractHttpInvoke
|
||||
|
||||
private HttpClient httpClient;
|
||||
private int connectionTimeout = 0;
|
||||
private int connectionRequestTimeout = 0;
|
||||
private int readTimeout = DEFAULT_READ_TIMEOUT_MILLISECONDS;
|
||||
|
||||
|
||||
@@ -148,6 +149,16 @@ public class HttpComponentsHttpInvokerRequestExecutor extends AbstractHttpInvoke
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the timeout in milliseconds used when requesting a connection from the connection
|
||||
* manager using the underlying HttpClient.
|
||||
* A timeout value of 0 specifies an infinite timeout.
|
||||
* @param connectionRequestTimeout the timeout value to request a connection in milliseconds
|
||||
*/
|
||||
public void setConnectionRequestTimeout(int connectionRequestTimeout) {
|
||||
this.connectionRequestTimeout = connectionRequestTimeout;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the socket read timeout for the underlying HttpClient.
|
||||
* A timeout value of 0 specifies an infinite timeout.
|
||||
@@ -240,9 +251,10 @@ public class HttpComponentsHttpInvokerRequestExecutor extends AbstractHttpInvoke
|
||||
* @return the RequestConfig to use
|
||||
*/
|
||||
protected RequestConfig createRequestConfig(HttpInvokerClientConfiguration config) {
|
||||
if (this.connectionTimeout > 0 || this.readTimeout > 0) {
|
||||
if (this.connectionTimeout > 0 || this.connectionRequestTimeout > 0 || this.readTimeout > 0) {
|
||||
return RequestConfig.custom()
|
||||
.setConnectTimeout(this.connectionTimeout)
|
||||
.setConnectionRequestTimeout(this.connectionRequestTimeout)
|
||||
.setSocketTimeout(this.readTimeout)
|
||||
.build();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user