diff --git a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HttpClientHTTPConduit.java b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HttpClientHTTPConduit.java index 01fd631afc..2d86718867 100644 --- a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HttpClientHTTPConduit.java +++ b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HttpClientHTTPConduit.java @@ -84,6 +84,30 @@ import org.apache.cxf.ws.addressing.EndpointReferenceType; public class HttpClientHTTPConduit extends URLConnectionHTTPConduit { + private static final class NoRefProxySelector extends ProxySelector { + private final ProxyFactory proxyFactory; + private final HTTPClientPolicy csPolicy; + + NoRefProxySelector(ProxyFactory proxyFactory, HTTPClientPolicy csPolicy) { + this.proxyFactory = proxyFactory; + this.csPolicy = csPolicy; + } + + @Override + public List select(URI uri) { + Proxy proxy = proxyFactory.createProxy(csPolicy, uri); + if (proxy != null) { + return Arrays.asList(proxy); + } + return ProxySelector.getDefault().select(uri); + } + + @Override + public void connectFailed(URI uri, SocketAddress sa, IOException ioe) { + // do nothing + } + } + volatile HttpClient client; volatile int lastTlsHash = -1; volatile URI sslURL; @@ -161,17 +185,7 @@ public class HttpClientHTTPConduit extends URLConnectionHTTPConduit { HttpClient cl = client; if (cl == null) { int ctimeout = determineConnectionTimeout(message, csPolicy); - ProxySelector ps = new ProxySelector() { - public List select(URI uri) { - Proxy proxy = proxyFactory.createProxy(csPolicy, uri); - if (proxy != null) { - return Arrays.asList(proxy); - } - return ProxySelector.getDefault().select(uri); - } - public void connectFailed(URI uri, SocketAddress sa, IOException ioe) { - } - }; + ProxySelector ps = new NoRefProxySelector(proxyFactory, csPolicy); HttpClient.Builder cb = HttpClient.newBuilder() .proxy(ps)