Prevent ServletResponse.setCharacterEncoding in SlingHttpServletResponseImpl
----------------------------------------------------------------------------
Key: SLING-726
URL: https://issues.apache.org/jira/browse/SLING-726
Project: Sling
Issue Type: Bug
Components: Engine
Affects Versions: Engine 2.0.2
Reporter: Felix Meschberger
Assignee: Felix Meschberger
Priority: Critical
Fix For: Engine 2.0.4
The Servlet API 2.4 specifies that calls to the
ServletResponse.setCharacterEncoding() method should be ignored if the response
has already been committed or if the getWriter() method has already been
called. Likewise the character encoding being specified through
ServletResponse.setContentType() should be ignored if the getWriter() method
has already been called (setContentType should be ignored if the response has
already been committed).
Unfortunately BEA WebLogic 10.3 seems to no ignore this call and instead
chooses to act upon it. It looks like WebLogic internally recodes, what has
already been written, and resets it into the output buffer, but does not seem
to reset the buffer offset before doing this. This causes all kind of garbage
of previous requests (since buffers seem to be reused) to be added to the
output ....
Sling should workaround this issue by overwriting the setCharacterEncoding and
setContentType methods to prevent the character encoding from being changed
after getWriter() has been called.
The reason, why Sling may run into problems is, that the DefaultSlingScript
used by the scripting/core module to adapt scripts to the Servlet interface
automatically sets the character encoding before calling the actual script.
This may cause responses handled by Sling to become garbled.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.