如何在commons-httpclient中强制断开连接?
-
25-09-2019 - |
题
我使用 commons-httpclient 将查询发送到 Web 服务器。Web 服务器从不关闭连接,但存在与连接上下文相关的小内存泄漏。
因此,我想时不时地关闭持久连接(例如,每个 X 查询),但我没有找到任何方法来做到这一点。我使用 MultiThreadedHTTPConnectionManager
我可以使用 MultiThreadedHTTPConnectionManager.closeIdleConnections(very_small_delay),但这不是很可靠:如果我的 Java 代码有很多工作要做,那么可能没有连接是空闲的,因为总是有其他线程在等待空闲连接。
谢谢,
解决方案
执行一个方法之后,让我们说GET,你可以阅读responsed的HTTPStatus数量,来决定是否method.releaseConnection()需要被调用。
或者,如果你知道哪些方面你想接近,你可以尝试
MultiThreadedHTTPConnectionManager
void releaseConnection(HttpConnection conn)
好吧,我还以为你有一些原因,你想“杀”的连接。假设你有要关闭在手连接时,HttpConnection的对象。愿此方法的帮助?
HttpConnection
public void close()
Closes the socket and streams.
其他提示
你打电话method.releaseConnection()
?
http://hc.apache.org/httpclient-3 .X / threading.html#Connection_Release
你能负担得起使用吗 SimpleHttpConnectionManager(boolean alwaysClose)
?
httpClient.setHttpConnectionManager(new SimpleHttpConnectionManager(true))
当我使用时 releaseConnections()
仍然存在联系 CLOSE_WAIT
状态。如果我添加可以吗 closeIdleConnections(0)
后 releaseConnections
?
这是否意味着即使连接被发送回池以供其他客户端使用但未关闭/释放 closeIdleConnections
会关闭它吗?