java – Jersey Client关闭InputStream响应 – 它真的有效吗?

我正在使用Jersey Client v2.16(Dropwizard 0.8.0的传递依赖,我也在使用它).

当实体被读作InputStream时,我对某个响应的关闭机制感到困惑. documentation声明:

Also if the entity is read into an InputStream (by response.readEntity(InputStream.class)),the connection stays open until you finish reading from the InputStream. In that case,the InputStream or the Response should be closed manually at the end of reading from InputStream.

但是,当我使用Response.readEntity(InputStream.class)获取响应实体时,我最终得到的是org.glassfish.jersey.message.internal.ReaderInterceptorExecutor $UnCloseableInputStream的实例,顾名思义,它不会释放当调用close()方法时,它下面的任何东西(我可能会说,打破了InputStream契约).这是close()方法

@Override
public void close() throws IOException {
    if (LOGGER.isLoggable(Level.FINE)) {
        LOGGER.log(Level.FINE,LocalizationMessages.MBR_TRYING_TO_CLOSE_STREAM(reader.getClass()));
    }
} 

因此,我最终在我的池中的HTTP连接未发布并慢慢填充池.

鉴于可能不容易获得对响应的引用,并且官方文档声明InputStream **或**应该手动关闭Response,我如何设法实际释放物理资源?

最佳答案
看起来这是泽西客户端的已知错误,根据https://java.net/jira/browse/JERSEY-2878https://github.com/jersey/jersey/releases/tag/2.21,它似乎在2.21中修复

相关文章

ArrayList简介:ArrayList 的底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量能动态增...
一、进程与线程 进程:是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。 线程...
本文为博客园作者所写: 一寸HUI,个人博客地址:https://www.cnblogs.com/zsql/ 简单的一个类...
#############java面向对象详解#############1、面向对象基本概念2、类与对象3、类和对象的定义格式4、...
一、什么是异常? 异常就是有异于常态,和正常情况不一样,有错误出错。在java中,阻止当前方法或作用域...
Collection接口 Collection接口 Collection接口 Collection是最基本的集合接口,一个Collection代表一组...