It appears that if you attempt to close an already closed stream you get an IO exception. This means that if Cocoon gets stopped and restarted it is possible, in at least some circumstances, for Cocoon to throw an IOException in org.apache.cocoon.servlet.CocoonServlet.java at line 1205 (the current v 2.1.3 code). I think that the code should probably swallow the IOException in this case? Probably something like:
} catch (IOException ie) { if ( !"The stream has been closed".equals( ie.getMessage() ) ) getLogger().error("Cocoon got an Exception while trying to close stream.", ie); If only to keep the logs clean and not hide any real exception; in our case we're throwing our own BadSessionException just prior to this. Peter Hunsberger