From 31472847c8a36bbee0256f50192c11f492f8f349 Mon Sep 17 00:00:00 2001 From: Martin Caslavsky Date: Mon, 12 Sep 2016 17:44:28 +0200 Subject: [PATCH] Allow to configure connection pool timeout The default connection pool timeout of Apache HTTP Client is -1 (unlimited) --- .../jaxrs/JerseyDockerCmdExecFactory.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/github/dockerjava/jaxrs/JerseyDockerCmdExecFactory.java b/src/main/java/com/github/dockerjava/jaxrs/JerseyDockerCmdExecFactory.java index 3339a2696..73bab979e 100644 --- a/src/main/java/com/github/dockerjava/jaxrs/JerseyDockerCmdExecFactory.java +++ b/src/main/java/com/github/dockerjava/jaxrs/JerseyDockerCmdExecFactory.java @@ -20,6 +20,7 @@ import com.github.dockerjava.api.command.UpdateContainerCmd; import com.github.dockerjava.core.SSLConfig; +import org.apache.http.client.config.RequestConfig; import org.apache.http.config.RegistryBuilder; import org.apache.http.conn.socket.ConnectionSocketFactory; import org.apache.http.conn.socket.PlainConnectionSocketFactory; @@ -110,6 +111,8 @@ public class JerseyDockerCmdExecFactory implements DockerCmdExecFactory { private Integer maxPerRouteConnections = null; + private Integer connectionRequestTimeout = null; + private ClientRequestFilter[] clientRequestFilters = null; private ClientResponseFilter[] clientResponseFilters = null; @@ -216,9 +219,10 @@ public void shutdown() { clientConfig.property(ApacheClientProperties.CONNECTION_MANAGER, connManager); // Configure connection pool timeout - // clientConfig.property(ApacheClientProperties.REQUEST_CONFIG, RequestConfig.custom() - // .setConnectionRequestTimeout(1000).build()); - + if (connectionRequestTimeout != null) { + clientConfig.property(ApacheClientProperties.REQUEST_CONFIG, RequestConfig.custom() + .setConnectionRequestTimeout(connectionRequestTimeout).build()); + } ClientBuilder clientBuilder = ClientBuilder.newBuilder().withConfig(clientConfig); if (sslContext != null) { @@ -570,6 +574,11 @@ public JerseyDockerCmdExecFactory withMaxPerRouteConnections(Integer maxPerRoute return this; } + public JerseyDockerCmdExecFactory withConnectionRequestTimeout(Integer connectionRequestTimeout) { + this.connectionRequestTimeout = connectionRequestTimeout; + return this; + } + public JerseyDockerCmdExecFactory withClientResponseFilters(ClientResponseFilter... clientResponseFilter) { this.clientResponseFilters = clientResponseFilter; return this;