我正在使用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,我如何设法实际释放物理资源?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。