2016-09-19 44 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

相关问题