当前位置: 首页 > 知识库问答 >
问题:

Java语言lang.IllegalState异常:连接池在关闭

曹骞仕
2023-03-14

当从S3下载文件时,它失败了,给了我这个异常

Java语言lang.IllegalState异常:连接池关闭

com.amazonaws.http.conn.Aandler.invoke(Aactory.java:76)
在com.amazonaws.http.conn.AbstractConnProxy70.request(AbstractConnPorg.apache.http.impl.execchain.)在xec.executePoolingHttpClientConnectionMxec.java:175连接(PoolingHttpClientConnectionManager.java:251)在sun.reflect.NativeMachodAccessorImpl.invoke0(本机方法)
org.apache.http.impl.client.NativeMachodAccessorIlient.do(NativeMEodAccessorImpl.java:62)在sun.reflect.在java.lang.reflect.Method.invoke(Method.java:498)在org.apache.http.util.ClientConnectionManagerFactory$Hsserts.check(ClientConnectionManagerFsserts.java:34)在org.apache.http.pool.$Pool.lease连接(未知来源)在ool.java:184MainClientEorg.apache.http.impl.conn.(MainClientEanager.request)在atsun.reflect.InternalHttpCmpl.invokeExecute(InternalHttpClient. java: 184)在org. apache. http. plp. client。CloseableHttpClient。在com. amazonaws. http。亚马逊HttpClient$Request ExecutionBuilderImpl。执行(亚马逊HttpClient. java: 649)在com. amazonaws. http。亚马逊HttpClient. java: 513)在com. amazonaws. services. s3。亚马逊3Client. invoke(亚马逊3Client. java: 4221)在com. amazonaws. services. s3。亚马逊3Client. invoke(亚马逊3Client. java: 4168)在com. amazonaws. services. s3。亚马逊3Client. getObjectMetadata(亚马逊3Client. java: 1249)在com. amazonaws. services. s3。转移管理器. do下载(转移管理器. java: 1053)在com. amazonaws. services. s3。转移管理器. do下载(转移管理器. java: 1007)在com. amazonawws

共有1个答案

方琦
2023-03-14

如果要共享连接,请不要在请求后关闭客户端。

也就是说,你可能正在做这样的事情:

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

取自:https://stackoverflow.com/a/59033548/1329340

 类似资料:
  • 我正在尝试使用Http将数据发布到REST服务,我已将我的客户端配置如下: 现在我有一个executor service负责调用实际发布,我将上述参数移交给executor service,如下所示: line是我试图发送的JSON负载。 现在,我在executor服务中的方法如下所示: 我在

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

  • 我正在Java中运行Apache HTTP POST请求,每当我超过1300个请求时,就会出现以下错误,我需要发出更多的请求,大约40k,我可以做些什么来纠正相同的错误?

  • 问题内容: 我们使用JDBC的标准代码部分是… 问题1:使用连接池时,是否应该在最后关闭连接?如果是这样,合并的目的就不会丢失吗?如果不是,那么DataSource如何知道何时释放Connection的特定实例并可以重用?我对此感到有些困惑,任何指针都表示赞赏。 问题2:以下方法是否接近标准?看起来像是尝试从池中获取连接,并且如果无法建立DataSource,请使用老式的DriverManager

  • 我正在使用Hibernate 3.3和Oracle 11g开发Struts 2 Framework。我的Web项目自5个月以来一直运行良好。但是最近我面临着java.sql.SQLRecoverableException:在一些空闲时间关闭连接。我将解释以下场景...我的hibernate.cfg.xml配置是 我的HibernateSessionFactory配置是 然后在运行以下代码时出错 当

  • 我希望在我的Spring 4应用程序中使用Hikari连接池。数据库是Google CloudSQLPostgres数据库。 我在pom中有以下依赖项。xml: 在我的申请Context.xml,我有: 但是我得到了以下例外: 出了什么问题?