尝试创建连接池,其中将仅创建单个HTTPS连接,并且在后续请求到来时将使用先前的连接池。当前,当我每次建立新连接并且以前的连接进入时间等待状态时,尝试尝试任何请求时。
在我正在使用的代码段下方,它适用于HTTP连接,但不适用于HTTPS
SslConfigurator sslConfig = SslConfigurator.newInstance().keyStoreFile(this.connectionInfo.getKeyStorePath()).keyStorePassword(connectionInfo.getKeyStorePassword()).keyStoreType("JKS").trustStoreFile(this.connectionInfo.getKeyStorePath()).trustStorePassword(connectionInfo.getKeyStorePassword()).securityProtocol("TLS");
logger.info("SSL CONFIG Accepted");
sslContext = sslConfig.createSSLContext();
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext,NoopHostnameVerifier.INSTANCE);
logger.info("SSL CONTEXT CREATED, Building Client" );
Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory> create().register("https", sslsf).build();
connManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry);
connManager.setMaxTotal(1);
connManager.setDefaultMaxPerRoute(1);
config = RequestConfig.custom().setConnectTimeout(60000).setConnectionRequestTimeout(60000).setSocketTimeout(60000).build();
client = HttpClients.custom().setDefaultRequestConfig(config).setConnectionManager(connManager).build();
答案 0 :(得分:0)
connManager.setMaxTotal(1);
我不确定您为什么认为这没有效果,因为这肯定会将池中的连接总数一次限制为一个。
但是在特定情况下,您应该使用BasicHttpClientConnectionManager
而不是PoolingHttpClientConnectionManager