2016-09-19 42 views
6

StreamingOutputOutputStream應該被執行類關閉嗎?關閉JAX-RS StreamingOutput的OutputStream

java-doc不提供任何建議。我想它只是代表底層的ServletOutputStream這意味着它不應該被關閉,但我的猜測可能是錯誤的:)另外,javadoc引用了MessageBodyWriter接口,它明確表示輸出流不能關閉。

https://docs.oracle.com/javaee/7/api/javax/ws/rs/core/StreamingOutput.html

+0

我不認爲你應該關閉它。如果您關閉輸出流,則可能會有下游過濾器或攔截器可能中斷。 – sinu

回答

6

由於無法找到一個明確的答案我看了看球衣的源作爲參考實現。在澤西島,StreamingOutputMessageBodyWriter通過簡單呼叫streamingOutput.write(os) [1]處理,其中osOutputStream傳遞給MessageBodyWriter。這很好,因爲它的javadoc很清楚,這個OutputStream一定不會被關閉。

總結:傳遞給StreamingOutputOutputStream一定不能關閉。

[1] https://github.com/jersey/jersey/blob/master/core-common/src/main/java/org/glassfish/jersey/message/internal/StreamingOutputProvider.java

相關問題