实现类是否应关闭StreamingOutputOutputStream

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是传递给OutputStreamMessageBodyWriter。很好,因为它的javadoc非常清楚,此OutputStream 不能关闭

总结:不得关闭传递给OutputStreamStreamingOutput

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

10-06 03:54