对 CloseableHttpClient 使用 try-with-resource 块是否也会关闭返回的 CloseableHttpResponse?
Does using a try-with-resource block for CloseableHttpClient also close the returning CloseableHttpResponse?
如果 try-with-resource
只关闭 CloseableHttpClient
或者也关闭响应,我正在尝试锻炼。
例如,
private static CloseableHttpResponse sendRequest()
throws IOException
{
final HttpUriRequest httpUriRequest =
buildRequest(url, requestMethod, requestParameters, httpHeaders);
try (CloseableHttpClient client = HttpClientBuilder.create().build())
{
return client.execute(httpUriRequest);
}
}
我们都知道这将按预期关闭 CloseableHttpClient
。那那个电话的结果呢? CloseableHttpClient
returns一个CloseableHttpResponse
。这是否也需要在调用代码或其他地方关闭?或者它是否与 CloseableHttpClient
同时关闭 try-with-resource
?
奖金问题:我如何向自己证明事情实际上正在关闭?我正在查看 IntelliJ 中的线程池,但无法完全锻炼 where/when 事情即将结束。
try-with-resource只会关闭try子句中声明的资源
try (CloseableHttpClient client = HttpClientBuilder.create().build())
例如它只会关闭变量"client"
此外,如果响应被关闭,提取数据将成为一个问题,因此关闭它的责任应该落在其他地方。
Jhilton给出的答案完全正确(我的+1)。但是,就 HttpClient 特定资源管理而言,关闭 HttpClient
实例会导致关闭所有保持活动和活动的连接,包括当前与 HttpResponse
实例关联的连接。这实质上意味着如果关闭用于执行消息交换的 HttpClient
实例,则不必关闭 HttpResponse
实例,但非常不鼓励这种模式。
如果 try-with-resource
只关闭 CloseableHttpClient
或者也关闭响应,我正在尝试锻炼。
例如,
private static CloseableHttpResponse sendRequest()
throws IOException
{
final HttpUriRequest httpUriRequest =
buildRequest(url, requestMethod, requestParameters, httpHeaders);
try (CloseableHttpClient client = HttpClientBuilder.create().build())
{
return client.execute(httpUriRequest);
}
}
我们都知道这将按预期关闭 CloseableHttpClient
。那那个电话的结果呢? CloseableHttpClient
returns一个CloseableHttpResponse
。这是否也需要在调用代码或其他地方关闭?或者它是否与 CloseableHttpClient
同时关闭 try-with-resource
?
奖金问题:我如何向自己证明事情实际上正在关闭?我正在查看 IntelliJ 中的线程池,但无法完全锻炼 where/when 事情即将结束。
try-with-resource只会关闭try子句中声明的资源
try (CloseableHttpClient client = HttpClientBuilder.create().build())
例如它只会关闭变量"client"
此外,如果响应被关闭,提取数据将成为一个问题,因此关闭它的责任应该落在其他地方。
Jhilton给出的答案完全正确(我的+1)。但是,就 HttpClient 特定资源管理而言,关闭 HttpClient
实例会导致关闭所有保持活动和活动的连接,包括当前与 HttpResponse
实例关联的连接。这实质上意味着如果关闭用于执行消息交换的 HttpClient
实例,则不必关闭 HttpResponse
实例,但非常不鼓励这种模式。