我已经将我的代码版本从http更改为https,我正在使用 HttpClient client = HttpClientFactory.getHttpsClient() 为执行目的。当我第一次尝试运行代码时,它运行良好,而下一次则抛出异常java.lang.illegalstateexception:连接池关闭异常我用的是4.5hc。
HttpClient client = HttpClientFactory.getHttpsClient()
sg24os4d1#
如果要共享连接,请不要在请求后关闭客户端。也就是说,你可能在做这样的事情:
PoolingHttpClientConnectionManager pool = new PoolingHttpClientConnectionManager(); ... CloseableHttpClient httpclient = HttpClients.custom() .setConnectionManager(pool) .build(); try { // try-with-resources HttpGet httpget = new HttpGet(url.toURI()); try (CloseableHttpResponse response = httpclient.execute(httpget); InputStream fis = response.getEntity().getContent(); ReadableByteChannel channel = Channels.newChannel(fis)) { // ... get data ... } finally { httpclient.close(); <====== !! } } catch (IOException | URISyntaxException e) { // exception handling ... }
那个 httpclient.close() 正在导致下一个池连接失败。
httpclient.close()
1条答案
按热度按时间sg24os4d1#
如果要共享连接,请不要在请求后关闭客户端。
也就是说,你可能在做这样的事情:
那个
httpclient.close()
正在导致下一个池连接失败。