加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 01:04:00 所属栏目:Java 来源:网络整理
导读:我正在使用Jersey Client v2.16(Dropwizard 0.8.0的传递依赖,我也在使用它). 当实体被读作InputStream时,我对某个响应的关闭机制感到困惑. documentation声明: Also if the entity is read into an InputStream (by response.readEntity(InputStream.class)

我正在使用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-2878和https://github.com/jersey/jersey/releases/tag/2.21,它似乎在2.21中修复

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读