2
我使用Apache DefaultHttpClient,其中PoolingClientConnectionManager和BasicResponseHandler。这些在不同的线程之间共享,并且每个线程创建它自己的HttpRequestBase扩展。使用PoolingClientConnectionManager时释放连接?
我是否需要手动告诉我使用BasicResponseHandlers时使用方面所做的经理吗?我是否需要将它封装在finally中,这样异常不会导致连接泄漏?
换句话说,做我需要做的这
HttpGet get = new HttpGet(address);
try {
httpclient.execute(get, new BasicResponseHandler());
} finally {
get.reset();
}
或是否足够呢?
HttpGet get = new HttpGet(address);
httpclient.execute(get, new BasicResponseHandler());
这是我的假设,但我希望看到更好的解释或链接到一些权威来源。 – Eyal
@Eyal请参见注释以“响应处理” http://hc.apache.org/httpcomponents-client-ga/examples.html – oleg
@oleg但是这个例子是单线程的,并且由于它们调用关机() finally子句,连接的释放是有保证的。在ResponseHandler的工作中,我担心会导致连接管理器认为连接仍在使用中,例如发生异常。 – Eyal