java.lang.illegalstateexception:连接池关闭异常

zaq34kh6  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(620)

我已经将我的代码版本从http更改为https,我正在使用 HttpClient client = HttpClientFactory.getHttpsClient() 为执行目的。当我第一次尝试运行代码时,它运行良好,而下一次则抛出异常
java.lang.illegalstateexception:连接池关闭异常
我用的是4.5hc。

sg24os4d

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() 正在导致下一个池连接失败。

相关问题