2015-10-20 76 views
5

我正在使用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,我如何設法實際釋放物理資源?

回答