Details
-
Type:
Bug
-
Status: Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: EE-3.3.0.GA
-
Fix Version/s: EE-3.3.0.GA_P01, 4.0.BETA, 4.0
-
Component/s: Framework, ICE-Components
-
Labels:None
-
Environment:All
-
Salesforce Case Reference:
-
Workaround Exists:Yes
-
Workaround Description:Either include the required compat jars (icefaces-ee-compat.jar, commons-*.jar) or remove the compat namespace from the page.
Description
When declaring the ICEfaces compat component namespace in the xhtml page but not including the required Jar files the following error is thrown in EE 3.3.0 (The same setup is not an issue with EE 3.2.0):
java.lang.RuntimeException: Cannot clone document
at org.icefaces.impl.context.DOMResponseWriter.cloneDocument(DOMResponseWriter.java:494)
at org.icefaces.impl.context.DOMResponseWriter.startSubtreeRendering(DOMResponseWriter.java:486)
at org.icefaces.impl.context.DOMPartialViewContext.processPartial(DOMPartialViewContext.java:158)
at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:973)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:413)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:124)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1657)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:939)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:502)
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:181)
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:91)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:864)
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1592)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:186)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:83)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1613)
Caused by: java.lang.NullPointerException
at org.icefaces.impl.fastinfoset.com.sun.xml.fastinfoset.util.NamespaceContextImplementation.declarePrefix(NamespaceContextImplementation.java:163)
at org.icefaces.impl.fastinfoset.com.sun.xml.fastinfoset.dom.DOMDocumentSerializer.serializeElement(DOMDocumentSerializer.java:142)
at org.icefaces.impl.fastinfoset.com.sun.xml.fastinfoset.dom.DOMDocumentSerializer.serialize(DOMDocumentSerializer.java:78)
at org.icefaces.impl.context.DOMResponseWriter.serializeDocument(DOMResponseWriter.java:546)
at org.icefaces.impl.context.DOMResponseWriter.cloneDocument(DOMResponseWriter.java:491)
... 30 more
java.lang.RuntimeException: Cannot clone document
at org.icefaces.impl.context.DOMResponseWriter.cloneDocument(DOMResponseWriter.java:494)
at org.icefaces.impl.context.DOMResponseWriter.startSubtreeRendering(DOMResponseWriter.java:486)
at org.icefaces.impl.context.DOMPartialViewContext.processPartial(DOMPartialViewContext.java:158)
at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:973)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:413)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:124)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1657)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:939)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:502)
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:181)
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:91)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:864)
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1592)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:186)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:83)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1613)
Caused by: java.lang.NullPointerException
at org.icefaces.impl.fastinfoset.com.sun.xml.fastinfoset.util.NamespaceContextImplementation.declarePrefix(NamespaceContextImplementation.java:163)
at org.icefaces.impl.fastinfoset.com.sun.xml.fastinfoset.dom.DOMDocumentSerializer.serializeElement(DOMDocumentSerializer.java:142)
at org.icefaces.impl.fastinfoset.com.sun.xml.fastinfoset.dom.DOMDocumentSerializer.serialize(DOMDocumentSerializer.java:78)
at org.icefaces.impl.context.DOMResponseWriter.serializeDocument(DOMResponseWriter.java:546)
at org.icefaces.impl.context.DOMResponseWriter.cloneDocument(DOMResponseWriter.java:491)
... 30 more
Issue Links
- depends on
-
ICE-9398 DOM clone/copy reduces adjacent TEXT nodes which causes unintended DOM differences, so javascript executes redundantly
-
- Closed
-
Activity
Field | Original Value | New Value |
---|---|---|
Salesforce Case Reference | 5007000000UZullAAD |
Workaround Description | Either include the required compat jars (icefaces-EE-compat.jar, commons-*.jar) or remove the compat namespace from the page. | Either include the required compat jars (icefaces-ee-compat.jar, commons-*.jar) or remove the compat namespace from the page. |
Attachment | ice-9494.war [ 16108 ] |
Fix Version/s | EE-3.3.0.GA_P01 [ 11174 ] | |
Fix Version/s | 3.4 [ 10770 ] |
Assignee | Deryk Sinotte [ deryk.sinotte ] |
Status | Open [ 1 ] | Resolved [ 5 ] |
Resolution | Fixed [ 1 ] |
Fix Version/s | 4.0 [ 11382 ] |
Status | Resolved [ 5 ] | Closed [ 6 ] |
The customer's test page works fine if it is simply added to showcase and run in that application. Proper behaviour on both Tomcat 7 and WebSphere 7. Building and deploying their whole .war file, it fails on both WebSphere 7 and Tomcat 7. So it's not specific to WebSphere.
It's a very simple app and once it started failing on Tomcat, it was a bit quicker and easier to track down. They declare these namespaces:
And these libraries:
The difference is the compat namespace. Turns out that they don't actually use compat or include the necessary libraries but they have it declared and that's what's causing the problem. It doesn't happen in showcase because compat is declared AND the libraries are present.
To "fix" it, they can do 1 of two things. Either add the following libs to their .war file:
or just remove the unused namespace declaration:
and the problem goes away.