1

HttpClient3.x 中MultiThreadedHttpConnectionManager.shutdownAll(),我们从 a 调用了一个 staticServletContextListener#contextDestroyed()来清理所有可能挂起的线程(防止类加载器泄漏)。

HttpClient4.x 中,这已经消失了,但是有PoolingClientConnectionManager. 但是,它没有关闭连接的静态方法。

如何解决这个问题?

4

1 回答 1

1

在 HC 3.1 中包含此方法是一个错误。一般来说,我认为没有理由为每个不同的 HTTP 服务拥有多个连接池。跟踪一两个连接管理器并在必要时关闭它们应该不难。话虽如此,如果出于某种原因您确实需要不加选择地关闭所有活动的连接管理器,您可以使用 HC 在 4.3-beta2 版本中在 OSGi 容器中运行时使用的相同技术:基本上跟踪由创建的 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

于 2013-06-15T12:15:27.877 回答