我正在使用Jersey Client v2.16(我正在使用Dropwizard 0.8.0的傳遞依賴項)。Jersey Client關閉InputStream響應 - 它真的有效嗎?
當某個實體被讀爲InputStream
時,我對某個響應的關閉機制感到困惑。該documentation狀態:
此外,如果實體被讀入一個InputStream(通過response.readEntity(InputStream.class)),連接保持打開狀態,直到完成從InputStream讀取。在這種情況下,InputStream或Response應在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連接在我的游泳池是未發行和慢充池。
鑑於可能不容易獲得對回覆的引用,並且官方文檔狀態爲the InputStream **or** the Response should be closed manually
,我如何設法實際釋放物理資源?