PoolingClientConnectionManager如何关闭套接字

时间:2013-08-26 05:58:59

标签: java apache-httpclient-4.x

此问题与PoolingClientConnectionManager(HttpClient 4.2.5 API)

有关

我在池中有最多5个远程连接,以及从中下载文件的20多个url列表。我下载文件后释放连接。但我没有给出任何超时值。从5个不同的URL下载文件后会发生什么。我认为我从文档中收集到的是第6个文件在客户端检测到连接从它结束时才开始下载。是这样吗?从URL下载文件后,我该怎么做才能关闭套接字。请注意,我从中下载文件的所有URL都在不同的服务器上。

2 个答案:

答案 0 :(得分:3)

根据The HTTPClient webpage

正确的方法是

} finally {
  // Release the connection.
  method.releaseConnection();
}  

文档还提到,为了强制关闭连接,最简单的方法是覆盖connectionManager,在你的情况下是PoolingClientConnectionManager。

如果查看here处的代码,您可以看到可以更改releaseConnection方法。特别是更改第255行,以便在连接打开时将其关闭。

答案 1 :(得分:3)

向管理员发布连接并不能保证立即处置。管理者很可能会尝试保持连接存活。这里有两个选项(1)正如user2310289正确指出的那样,您可能希望实现一个自定义连接,在发布时不加选择地关闭连接或(2(推荐))实现一个自定义驱逐策略,用于在HttpClient tutorial

中描述的一段不活动时间之后驱逐持久连接