Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: 3.0
-
Fix Version/s: EE-3.0.0.GA
-
Component/s: Framework
-
Labels:None
-
Environment:ICEFaces 3.0 + Myfaces 2.1.6 + WebSphere 7 + Portal 2
Description
During processing of a push request, the ICEfaces CharacterEncodingHandler class tries to change the characterEncoding. In a WebSphere environment, this call throws an IllegalStateException
Caused by: java.lang.IllegalStateException: This method must not be called after the HTTP-Body was accessed !
at com.ibm.ws.portletcontainer.core.impl.PortletRequestImpl.setCharacterEncoding(PortletRequestImpl.java:1103)
at org.portletfaces.bridge.context.ExternalContextImpl.setRequestCharacterEncoding(ExternalContextImpl.java:791)
at org.icefaces.impl.util.CharacterEncodingHandler.setCharacterEncoding(CharacterEncodingHandler.java:76)
at org.icefaces.impl.util.CharacterEncodingHandler.isResourceRequest(CharacterEncodingHandler.java:65)
at javax.faces.application.ResourceHandlerWrapper.isResourceRequest(ResourceHandlerWrapper.java:68)
at javax.faces.application.ResourceHandlerWrapper.isResourceRequest(ResourceHandlerWrapper.java:68)
at javax.faces.application.ResourceHandlerWrapper.isResourceRequest(ResourceHandlerWrapper.java:68)
at org.portletfaces.bridge.BridgeImpl.doFacesRequest(BridgeImpl.java:506)
There are some additional comments here:
https://issues.apache.org/jira/browse/PORTLETBRIDGE-48
Caused by: java.lang.IllegalStateException: This method must not be called after the HTTP-Body was accessed !
at com.ibm.ws.portletcontainer.core.impl.PortletRequestImpl.setCharacterEncoding(PortletRequestImpl.java:1103)
at org.portletfaces.bridge.context.ExternalContextImpl.setRequestCharacterEncoding(ExternalContextImpl.java:791)
at org.icefaces.impl.util.CharacterEncodingHandler.setCharacterEncoding(CharacterEncodingHandler.java:76)
at org.icefaces.impl.util.CharacterEncodingHandler.isResourceRequest(CharacterEncodingHandler.java:65)
at javax.faces.application.ResourceHandlerWrapper.isResourceRequest(ResourceHandlerWrapper.java:68)
at javax.faces.application.ResourceHandlerWrapper.isResourceRequest(ResourceHandlerWrapper.java:68)
at javax.faces.application.ResourceHandlerWrapper.isResourceRequest(ResourceHandlerWrapper.java:68)
at org.portletfaces.bridge.BridgeImpl.doFacesRequest(BridgeImpl.java:506)
There are some additional comments here:
https://issues.apache.org/jira/browse/PORTLETBRIDGE-48
Issue Links
- blocks
-
IPCK-259 Add ICEfaces EE Support for WebSphere Portal 7
- Closed
A workaround in the code exists by quietly catching the IllegalStateException in our class and carrying on. The code, for the purposes of testing in WebSphere can ignore this attempt. Deryk thought this behaviour should be farmed out to a WebSphere specific class in the EE delivery. How that might be and how it would be loaded first in the resourceHandler chain was open to debate.