diff --git a/spring-web/src/main/java/org/springframework/http/client/JettyClientHttpRequest.java b/spring-web/src/main/java/org/springframework/http/client/JettyClientHttpRequest.java index 6eee0024670..5fef84532c6 100644 --- a/spring-web/src/main/java/org/springframework/http/client/JettyClientHttpRequest.java +++ b/spring-web/src/main/java/org/springframework/http/client/JettyClientHttpRequest.java @@ -19,7 +19,6 @@ package org.springframework.http.client; import java.io.IOException; import java.io.OutputStream; import java.net.URI; -import java.time.Duration; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; @@ -46,12 +45,12 @@ class JettyClientHttpRequest extends AbstractStreamingClientHttpRequest { private final Request request; - private final Duration timeOut; + private final int readTimeout; - public JettyClientHttpRequest(Request request, Duration timeOut) { + public JettyClientHttpRequest(Request request, int readTimeout) { this.request = request; - this.timeOut = timeOut; + this.readTimeout = readTimeout; } @Override @@ -92,7 +91,7 @@ class JettyClientHttpRequest extends AbstractStreamingClientHttpRequest { else { this.request.send(responseListener); } - Response response = responseListener.get(TimeUnit.MILLISECONDS.convert(this.timeOut), TimeUnit.MILLISECONDS); + Response response = responseListener.get(this.readTimeout, TimeUnit.MILLISECONDS); return new JettyClientHttpResponse(response, responseListener.getInputStream()); } catch (InterruptedException ex) { diff --git a/spring-web/src/main/java/org/springframework/http/client/JettyClientHttpRequestFactory.java b/spring-web/src/main/java/org/springframework/http/client/JettyClientHttpRequestFactory.java index e69c050740f..9daa2fddad9 100644 --- a/spring-web/src/main/java/org/springframework/http/client/JettyClientHttpRequestFactory.java +++ b/spring-web/src/main/java/org/springframework/http/client/JettyClientHttpRequestFactory.java @@ -18,7 +18,6 @@ package org.springframework.http.client; import java.io.IOException; import java.net.URI; -import java.time.Duration; import org.eclipse.jetty.client.HttpClient; import org.eclipse.jetty.client.api.Request; @@ -41,7 +40,7 @@ public class JettyClientHttpRequestFactory implements ClientHttpRequestFactory, private final boolean defaultClient; - private Duration timeOut = Duration.ofSeconds(1); + private int readTimeout = 1000; /** @@ -66,13 +65,20 @@ public class JettyClientHttpRequestFactory implements ClientHttpRequestFactory, /** - * Sets the maximum time to wait until all headers have been received. - * The default value is 1 second. + * Set the underlying connect timeout in milliseconds. + * A value of 0 specifies an infinite timeout. */ - public void setTimeOut(Duration timeOut) { - Assert.notNull(timeOut, "TimeOut must not be null"); - Assert.isTrue(!timeOut.isNegative(), "TimeOut must not be negative"); - this.timeOut = timeOut; + public void setConnectTimeout(int connectTimeout) { + Assert.isTrue(connectTimeout >= 0, "Timeout must be a non-negative value"); + this.httpClient.setConnectTimeout(connectTimeout); + } + + /** + * Set the underlying read timeout in milliseconds. + */ + public void setReadTimeout(int readTimeout) { + Assert.isTrue(readTimeout > 0, "Timeout must be a positive value"); + this.readTimeout = readTimeout; } @Override @@ -105,6 +111,6 @@ public class JettyClientHttpRequestFactory implements ClientHttpRequestFactory, } Request request = this.httpClient.newRequest(uri).method(httpMethod.name()); - return new JettyClientHttpRequest(request, this.timeOut); + return new JettyClientHttpRequest(request, this.readTimeout); } }