diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/apache/RibbonLoadBalancingHttpClient.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/apache/RibbonLoadBalancingHttpClient.java index daa1e831..b623652a 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/apache/RibbonLoadBalancingHttpClient.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/apache/RibbonLoadBalancingHttpClient.java @@ -23,13 +23,11 @@ import org.apache.http.client.HttpClient; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.HttpUriRequest; import org.apache.http.impl.client.HttpClientBuilder; -import org.springframework.cloud.netflix.ribbon.DefaultServerIntrospector; import org.springframework.cloud.netflix.ribbon.ServerIntrospector; import org.springframework.cloud.netflix.ribbon.support.AbstractLoadBalancingClient; import org.springframework.web.util.UriComponentsBuilder; import com.netflix.client.config.CommonClientConfigKey; -import com.netflix.client.config.DefaultClientConfigImpl; import com.netflix.client.config.IClientConfig; import com.netflix.loadbalancer.ILoadBalancer; import com.netflix.loadbalancer.Server; @@ -42,40 +40,27 @@ import static org.springframework.cloud.netflix.ribbon.RibbonUtils.updateToHttps //TODO: rename (ie new class that extends this in Dalston) to ApacheHttpLoadBalancingClient public class RibbonLoadBalancingHttpClient extends - AbstractLoadBalancingClient { - private final HttpClient delegate; - private final IClientConfig config; - private final ServerIntrospector serverIntrospector; + AbstractLoadBalancingClient { @Deprecated public RibbonLoadBalancingHttpClient() { - this(new DefaultClientConfigImpl(), new DefaultServerIntrospector()); + super(); } @Deprecated public RibbonLoadBalancingHttpClient(final ILoadBalancer lb) { super(lb); - this.config = new DefaultClientConfigImpl(); - this.delegate = createHttpClient(this.config); - this.serverIntrospector = new DefaultServerIntrospector(); - initWithNiwsConfig(config); } public RibbonLoadBalancingHttpClient(IClientConfig config, ServerIntrospector serverIntrospector) { - this.delegate = createHttpClient(config); - this.config = config; - this.serverIntrospector = serverIntrospector; - initWithNiwsConfig(config); + super(config, serverIntrospector); } public RibbonLoadBalancingHttpClient(HttpClient delegate, IClientConfig config, ServerIntrospector serverIntrospector) { - this.delegate = delegate; - this.config = config; - this.serverIntrospector = serverIntrospector; - initWithNiwsConfig(config); + super(delegate, config, serverIntrospector); } - protected HttpClient createHttpClient(IClientConfig config) { + protected HttpClient createDelegate(IClientConfig config) { return HttpClientBuilder.create() // already defaults to 0 in builder, so resetting to 0 won't hurt .setMaxConnTotal(config.getPropertyAsInteger(CommonClientConfigKey.MaxTotalConnections, 0)) @@ -86,10 +71,6 @@ public class RibbonLoadBalancingHttpClient .build(); } - protected HttpClient getDelegate() { - return this.delegate; - } - @Override public RibbonApacheHttpResponse execute(RibbonApacheHttpRequest request, final IClientConfig configOverride) throws Exception { diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/okhttp/OkHttpLoadBalancingClient.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/okhttp/OkHttpLoadBalancingClient.java index 001e57e2..33851327 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/okhttp/OkHttpLoadBalancingClient.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/okhttp/OkHttpLoadBalancingClient.java @@ -19,13 +19,11 @@ package org.springframework.cloud.netflix.ribbon.okhttp; import java.net.URI; import java.util.concurrent.TimeUnit; -import org.springframework.cloud.netflix.ribbon.DefaultServerIntrospector; import org.springframework.cloud.netflix.ribbon.ServerIntrospector; import org.springframework.cloud.netflix.ribbon.support.AbstractLoadBalancingClient; import org.springframework.web.util.UriComponentsBuilder; import com.netflix.client.config.CommonClientConfigKey; -import com.netflix.client.config.DefaultClientConfigImpl; import com.netflix.client.config.IClientConfig; import com.netflix.loadbalancer.ILoadBalancer; import com.netflix.loadbalancer.Server; @@ -40,30 +38,31 @@ import static org.springframework.cloud.netflix.ribbon.RibbonUtils.updateToHttps * @author Spencer Gibb */ public class OkHttpLoadBalancingClient - extends AbstractLoadBalancingClient { - private final OkHttpClient delegate = new OkHttpClient(); - private final IClientConfig config; - private final ServerIntrospector serverIntrospector; + extends AbstractLoadBalancingClient { @Deprecated public OkHttpLoadBalancingClient() { super(); - config = new DefaultClientConfigImpl(); - serverIntrospector = new DefaultServerIntrospector(); } @Deprecated public OkHttpLoadBalancingClient(final ILoadBalancer lb) { super(lb); - config = new DefaultClientConfigImpl(); - serverIntrospector = new DefaultServerIntrospector(); } public OkHttpLoadBalancingClient(IClientConfig config, ServerIntrospector serverIntrospector) { - this.config = config; - this.serverIntrospector = serverIntrospector; - initWithNiwsConfig(config); + super(config, serverIntrospector); + } + + public OkHttpLoadBalancingClient(OkHttpClient delegate, IClientConfig config, + ServerIntrospector serverIntrospector) { + super(delegate, config, serverIntrospector); + } + + @Override + protected OkHttpClient createDelegate(IClientConfig config) { + return new OkHttpClient(); } @Override diff --git a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/support/AbstractLoadBalancingClient.java b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/support/AbstractLoadBalancingClient.java index 8805f216..db376f57 100644 --- a/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/support/AbstractLoadBalancingClient.java +++ b/spring-cloud-netflix-core/src/main/java/org/springframework/cloud/netflix/ribbon/support/AbstractLoadBalancingClient.java @@ -17,6 +17,9 @@ package org.springframework.cloud.netflix.ribbon.support; +import org.springframework.cloud.netflix.ribbon.DefaultServerIntrospector; +import org.springframework.cloud.netflix.ribbon.ServerIntrospector; + import com.netflix.client.AbstractLoadBalancerAwareClient; import com.netflix.client.IResponse; import com.netflix.client.RequestSpecificRetryHandler; @@ -29,7 +32,7 @@ import com.netflix.loadbalancer.ILoadBalancer; /** * @author Spencer Gibb */ -public abstract class AbstractLoadBalancingClient extends +public abstract class AbstractLoadBalancingClient extends AbstractLoadBalancerAwareClient { protected int connectTimeout; @@ -42,16 +45,47 @@ public abstract class AbstractLoadBalancingClient