实现类是否应关闭StreamingOutput
的OutputStream
?
java-doc没有给出任何建议。我猜它只是委托(delegate)给底层的ServletOutputStream
,这意味着它不应该被关闭,但是我的猜测可能是错误的:) Javadoc也引用了MessageBodyWriter
接口(interface),其中明确指出了输出流必须不被关闭。
https://docs.oracle.com/javaee/7/api/javax/ws/rs/core/StreamingOutput.html
最佳答案
找不到明确的答案,我看了jersey的来源作为引用实现。在 Jersey ,StreamingOutput
通过简单地调用MessageBodyWriter
[1]由streamingOutput.write(os)
处理,其中os
是传递给OutputStream
的MessageBodyWriter
。很好,因为它的javadoc非常清楚,此OutputStream
不能关闭。
总结:不得关闭传递给OutputStream
的StreamingOutput
。
[1] https://github.com/jersey/jersey/blob/master/core-common/src/main/java/org/glassfish/jersey/message/internal/StreamingOutputProvider.java