HttpClient 4.x中的MultiThreadedHttpConnectionManager.shutdownAll()的等价物

时间:2013-06-14 22:50:19

标签: java apache-httpclient-4.x apache-commons-httpclient

使用HttpClient 3.x时,我们从MultiThreadedHttpConnectionManager.shutdownAll()调用了一个静态ServletContextListener#contextDestroyed()来清理所有可能挂起的线程(防止类加载器泄漏)。

使用HttpClient 4.x,这已经消失,但是PoolingClientConnectionManager。但是,它没有静态方法来关闭连接。

如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

在HC 3.1中包含此方法是一个错误。通常,我认为没有理由为每个不同的HTTP服务提供多个连接池。跟踪一个或两个连接管理器并在必要时关闭它们应该不难。话虽如此,如果由于某种原因你真的需要不加选择地关闭所有活动的连接管理器,你可以使用与HC 4.3和beta2版本相同的技术,当在OS​​Gi容器内运行时:基本上跟踪创建的HttpClient实例自定义HttpClientBuilder并在关闭容器或重新加载包时关闭它们

https://svn.apache.org/repos/asf/httpcomponents/httpclient/tags/4.3-beta2/httpclient-osgi/src/main/java/org/apache/http/osgi/impl/OSGiHttpClientBuilder.java