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

在PoolingHttpClientConnectionManager中释放租用的连接

湛光明
2023-03-14

我们使用Jersey(2.22.2版)执行REST请求,使用ApacheConnectorProvider和PoolightTPClientConnectionManager管理连接池。

是否有办法从租赁连接列表中手动释放连接?

PoolingHttpClientConnectionManager提供了关闭过期和空闲连接的方法,但这将从可用连接列表中关闭和删除连接,这不是我要找的。

我想这样做的原因是因为我想避免连接泄漏。使用上述服务的开发人员应该总是通过response.readEntity()或response.close()来关闭连接,如果他忘记了这样做,那么我不认为手动关闭连接是一个好的解决方案。但是如果连接因为一些意外的问题而没有关闭,并且保留在租赁列表中,那么我希望能够自己关闭它。

与Apache建议编写守护进程线程来清除过期的连接(“连接退出策略”)一样,我也希望能够从租用列表中清除连接。

共有1个答案

苗征
2023-03-14

调用response.close()内最后块你的代码,或者你可以使用java try与资源(java版本

   try{
      ClosableHttpResposne response = .....; 
    }catch(Exception e){
       // .....
    }finally{
    response.close();
    }

try(ClosableHttpResposne response = .....){
}catch(Exception e){
}
 类似资料:
  • 当从Oracle datasource获得连接时,我们使用appserver(weblogic/JBoss)特定的包装器将连接包装到Oracle连接,如下面所示。如果我们不包装它,我们将无法使用Oracle的特性,如ArrayDescriptors。我们应该改变我们的应用程序,使它们同时在weblogic和JBoss中工作。 java: 每当需要连接时,我们将像下面这样调用Datasource:

  • 问题内容: 我在Redis中存储json数据列表,并使用ServiceStack c#客户端访问它。我本质上是在管理自己的外键,在其中存储id,然后使用应用程序内部的接口从中提取ID ,然后从Redis获取基础json对象并将其打包为列表以返回其他部分我的申请。 我正在使用,因为我希望Redis可以托管在与执行代码的服务器不同的服务器上。 我正在使用MSOpenTech Redis服务器在Wind

  • 我正在使用spring rest模板发送与apache http client 4.2.1集成的rest请求。 由于需要向多个服务器发送请求,增加了PoolingClientConnectionManager来管理连接。 当系统运行几天后,我们发现连接达到了最大每路由设置。 打印日志如下所示保持活动的总数:0;分配路线:5选5;分配总数:100个中的5个 似乎由于某种原因,连接没有被释放。但是当我

  • 这是释放回池的连接的正确方法吗 只是想确保这是正确的,因为如果我不调用连接,我的连接不会被重新循环

  • Tomcat在使用后不释放连接的原因可能是什么? 这是我的配置