Improvements in the ClientConfiguration sample app

This commit is contained in:
Oleg Kalnichevski 2023-07-13 17:51:07 +02:00
parent 09ae5f212a
commit 9ad56ad734

View File

@ -54,10 +54,9 @@
import org.apache.hc.client5.http.impl.classic.HttpClients; import org.apache.hc.client5.http.impl.classic.HttpClients;
import org.apache.hc.client5.http.impl.io.ManagedHttpClientConnectionFactory; import org.apache.hc.client5.http.impl.io.ManagedHttpClientConnectionFactory;
import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager; import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager;
import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManagerBuilder;
import org.apache.hc.client5.http.io.ManagedHttpClientConnection; import org.apache.hc.client5.http.io.ManagedHttpClientConnection;
import org.apache.hc.client5.http.protocol.HttpClientContext; import org.apache.hc.client5.http.protocol.HttpClientContext;
import org.apache.hc.client5.http.socket.ConnectionSocketFactory;
import org.apache.hc.client5.http.socket.PlainConnectionSocketFactory;
import org.apache.hc.client5.http.ssl.SSLConnectionSocketFactory; import org.apache.hc.client5.http.ssl.SSLConnectionSocketFactory;
import org.apache.hc.core5.http.ClassicHttpRequest; import org.apache.hc.core5.http.ClassicHttpRequest;
import org.apache.hc.core5.http.ClassicHttpResponse; import org.apache.hc.core5.http.ClassicHttpResponse;
@ -66,8 +65,6 @@
import org.apache.hc.core5.http.ParseException; import org.apache.hc.core5.http.ParseException;
import org.apache.hc.core5.http.config.CharCodingConfig; import org.apache.hc.core5.http.config.CharCodingConfig;
import org.apache.hc.core5.http.config.Http1Config; import org.apache.hc.core5.http.config.Http1Config;
import org.apache.hc.core5.http.config.Registry;
import org.apache.hc.core5.http.config.RegistryBuilder;
import org.apache.hc.core5.http.impl.io.DefaultClassicHttpResponseFactory; import org.apache.hc.core5.http.impl.io.DefaultClassicHttpResponseFactory;
import org.apache.hc.core5.http.impl.io.DefaultHttpRequestWriterFactory; import org.apache.hc.core5.http.impl.io.DefaultHttpRequestWriterFactory;
import org.apache.hc.core5.http.impl.io.DefaultHttpResponseParser; import org.apache.hc.core5.http.impl.io.DefaultHttpResponseParser;
@ -152,10 +149,7 @@ public Header parseHeader(final CharArrayBuffer buffer) {
// Create a registry of custom connection socket factories for supported // Create a registry of custom connection socket factories for supported
// protocol schemes. // protocol schemes.
final Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create() final SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext);
.register("http", PlainConnectionSocketFactory.INSTANCE)
.register("https", new SSLConnectionSocketFactory(sslContext))
.build();
// Use custom DNS resolver to override the system DNS resolution. // Use custom DNS resolver to override the system DNS resolution.
final DnsResolver dnsResolver = new SystemDefaultDnsResolver() { final DnsResolver dnsResolver = new SystemDefaultDnsResolver() {
@ -172,9 +166,13 @@ public InetAddress[] resolve(final String host) throws UnknownHostException {
}; };
// Create a connection manager with custom configuration. // Create a connection manager with custom configuration.
final PoolingHttpClientConnectionManager connManager = new PoolingHttpClientConnectionManager( final PoolingHttpClientConnectionManager connManager = PoolingHttpClientConnectionManagerBuilder.create()
socketFactoryRegistry, PoolConcurrencyPolicy.STRICT, PoolReusePolicy.LIFO, TimeValue.ofMinutes(5), .setSSLSocketFactory(sslConnectionSocketFactory)
null, dnsResolver, null); .setConnectionFactory(connFactory)
.setDnsResolver(dnsResolver)
.setPoolConcurrencyPolicy(PoolConcurrencyPolicy.STRICT)
.setConnPoolPolicy(PoolReusePolicy.LIFO)
.build();
// Configure the connection manager to use socket configuration either // Configure the connection manager to use socket configuration either
// by default or for a specific host. // by default or for a specific host.