Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.5
-
None
-
None
Description
We recently upgraded from struts 2.3.x to 2.5.2 at our workplace. One of the changes we noticed was with stream result - if an error occurs, the output stream is automatically closed and no response is sent to the user (ignoring our custom error-500 page). The content-length of the response is thus 0 - a blank page.
This is occuring due to the addition of try-with-resources. In 2.3.x, the output stream wasn't set until after we find the input stream, like so:
try { get inputStream if (inputStream == null) throw Exception get outputStream } finally { if inputStream != null inputStream.close() if outputStream != null outputStream.close() }
However, in 2.5, this was changed to use a try-with-resources on the output stream by ticket WW-4515 (https://git-wip-us.apache.org/repos/asf?p=struts.git;a=commit;h=3fab155b4cc530ca3ca0b69299ddcb348eb5f26d):
try (OutputStream oOutput = oResponse.getOutputStream()) { // ... }
So, when we throw an error, the stream is closed and nothing further is written.
Is this intended behaviour? Is there an alternate solution to show our own error pages now (with stack trace?)?
Attachments
Issue Links
- is duplicated by
-
WW-4673 InputFileStream not closed in Stream results
-
- Closed
-