Richfaces generates exceptions while navigating to pages
kanal Sep 7, 2010 5:27 AMHi,
After adding richfaces 4.x libraries to my project, i get exceptions after going to some pages in my application (which were working before adding richfaces).
The most annoying thing is that those exceptions don't say anything usefull, usually they are just NullPointerExceptions.
And for example, after logging in to my application i try to go to the page, which shows all users' logins taken from the database (i use EJB 3.0).
Instead of page with users list i get this exception:
java.lang.NullPointerException at com.sun.faces.application.view.StateManagementStrategyImpl$4.invokeContextCallback(StateManagementStrategyImpl.java:289) at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:1253) at javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:672) at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:1262) at javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:672) at com.sun.faces.application.view.StateManagementStrategyImpl.restoreView(StateManagementStrategyImpl.java:284) at com.sun.faces.application.StateManagerImpl.restoreView(StateManagerImpl.java:177) at com.sun.faces.application.view.ViewHandlingStrategy.restoreView(ViewHandlingStrategy.java:131) at com.sun.faces.application.view.FaceletViewHandlingStrategy.restoreView(FaceletViewHandlingStrategy.java:430) at com.sun.faces.application.view.MultiViewHandler.restoreView(MultiViewHandler.java:143) at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:199) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:110) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97) at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165) at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791) at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693) at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954) at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170) at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88) at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76) at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53) at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57) at com.sun.grizzly.ContextTask.run(ContextTask.java:69) at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330) at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309) at java.lang.Thread.run(Thread.java:619)
Interesting thing is that there is no entry about this exception in server log. It is only showed on web browser, because in web.xml project state is set do Development.
Another interesting thing is that after refreshing previous page, and then clicking once again link to the page with users, it works as it should :|
But then after clicking that link one more time i get another exception:
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.sun.faces.application.view.StateHolderSaver at com.sun.faces.application.view.StateManagementStrategyImpl$4.invokeContextCallback(StateManagementStrategyImpl.java:288) at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:1253) at javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:672) at javax.faces.component.UIComponent.invokeOnComponent(UIComponent.java:1262) at javax.faces.component.UIComponentBase.invokeOnComponent(UIComponentBase.java:672) at com.sun.faces.application.view.StateManagementStrategyImpl.restoreView(StateManagementStrategyImpl.java:284) at com.sun.faces.application.StateManagerImpl.restoreView(StateManagerImpl.java:177) at com.sun.faces.application.view.ViewHandlingStrategy.restoreView(ViewHandlingStrategy.java:131) at com.sun.faces.application.view.FaceletViewHandlingStrategy.restoreView(FaceletViewHandlingStrategy.java:430) at com.sun.faces.application.view.MultiViewHandler.restoreView(MultiViewHandler.java:143) at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:199) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:110) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97) at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165) at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791) at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693) at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954) at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170) at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88) at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76) at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53) at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57) at com.sun.grizzly.ContextTask.run(ContextTask.java:69) at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330) at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309) at java.lang.Thread.run(Thread.java:619)
Of course everything works well without richfaces. I really have no idea what to do with this problem. I was searching for some answers on the internet but couldn't find anything usefull.
So once again, these are the steps i do (assume that there are only 2 links in my menu section: main page, users):
1) i log in and im navigated to the main page
2) i click users link and get NullPointerException posted above
3) i click on web browser's address bar and hit enter (address bar is set to main page)
4) main page is rendered, so i click users link once again
5) users page is rendered properly :O (earlier there was NullPointerException)
6) i click one more time users link and page with users should be rendered once again, but i get ClassCastException posted above
Very important thing:
There are no richfaces components on my pages yet. Only richfaces SKIN has been applied ...and i get those exceptions ;/
libs in my WEB-INF/lib folder:
- cssparser-0.9.5.jar
- richfaces-commons-api-4.0.0.20100826-M2.jar
- richfaces-components-api-4.0.0.20100826-M2.jar
- richfaces-components-ui-4.0.0.20100826-M2.jar
- richfaces-core-api-4.0.0.20100826-M2.jar
- richfaces-core-impl-4.0.0.20100826-M2.jar
- sac-1.3.jar
- slf4j-api-1.6.1.jar
- slf4j-log4j12-1.6.1.jar
- guava-r06.jar
Application was tested on both:
jboss-6.0.0.20100721-M4 (without guava-r06.jar because server didn't want to start with this lib)
and
glassfishv3 JEE6 (with all libs)
Application contains of Dynamic Web Project and EJB Project put together in one Enterprise Application Project.
I use JSF 2.0 (Mojarra) with Richfaces 4.x M2 (M1 generated the same exceptions).
If anyone could help, i would be grateful.