Having written my own response compression filter, I'd have to say that it is a mistake to rely upon anyone (other than the container) calling close on the output. You should allow for it, but not rely upon it.
Reinier Zwitserloot wrote: > IIRC, when you close a Servlet, the ServletIn/OutputStreams get closed > for you as well. However, that's not good enough if you're wrapping > those into a non-direct-writethrough stream, such as GzipOutputStream, > as Christian Catchpole mentioned. > > Therefore, close em. Be aware that the close calls, especially on the > ServletOutputStream, can generate exceptions; the servlet container > and the network can both simply be buffering your output, and the close > () then exceptions when the resulting flush down the pipe runs into an > I/O issue. Remember the mantra: > > InputStream.close(): stupid. > > OutputStream.close(): Even more important that .write()'s IOExceptions > - assume the entire write operation failed if you get one. > > On May 26, 1:37 am, Michael Neale <[email protected]> wrote: > >> You know it has been many years, but I still find that joke funny - >> everytime I write "flush()" I have a little smile. >> >> On May 26, 8:16 am, Viktor Klang <[email protected]> wrote: >> >> >>> I'd agree that flushing is a rather good practice, and while one's at it, >>> the mrs' generally appreciate having the toilet seat lid down. >>> >>> On Tue, May 26, 2009 at 12:12 AM, Christian Catchpole < >>> >>> [email protected]> wrote: >>> >>>> My expectation would be to close() as it should be abstracted from any >>>> real IO stream and closing should do no harm. In fact there can be >>>> cases where harm is done if you don't close, or at least flush. I >>>> wrote a method to wrap the OutputStream with a compressing stream if >>>> the client would accept it. This would be the same for any buffered >>>> stream that you wrap around the OutputStream. You will have to flush >>>> it as the container closing the stream it handed you is not going to >>>> flush your wrapper stream. And a close is as good as a flush. >>>> >>>> I do accept that I've often never closed on non-wrapped streams and >>>> it's done no harm. >>>> >>>> As for Brian's case, I would expect that closing the stream has "gone >>>> too far" closing some underlying stream prematurely. >>>> >>> -- >>> Viktor Klang >>> Rockstar Developer >>> > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "The Java Posse" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/javaposse?hl=en -~----------~----~----~----~------~----~------~--~---
