You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "Werner Punz (JIRA)" <de...@myfaces.apache.org> on 2010/12/12 22:15:01 UTC
[jira] Commented: (MYFACES-3000) Viewstate occasionally not
restored
[ https://issues.apache.org/jira/browse/MYFACES-3000?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12970658#action_12970658 ]
Werner Punz commented on MYFACES-3000:
--------------------------------------
Ok I am still trying to reproduce the error here locally with default settings, I am not entirely sure if the error was not caused by a broken config which might have carried over by a broken deployment.
So please do not do anything on this issue until I come to a clear conclusion.
> Viewstate occasionally not restored
> -----------------------------------
>
> Key: MYFACES-3000
> URL: https://issues.apache.org/jira/browse/MYFACES-3000
> Project: MyFaces Core
> Issue Type: Bug
> Affects Versions: 2.0.2
> Environment: Deployment running under glassfish or Google App engine but probably happens on all app servers.
> Reporter: Werner Punz
> Priority: Critical
>
> This is a tricky one. I made a small testing app thanks to the commentary of a user who wanted to run MyFaces in GAE and caused a condition which occasionally occurs, which prevents the ViewState to be found.
> Here is the mechanis. I have a small test app which loads a page. The page triggers a jsf.ajax request from time to time with render none, periodically but not connected to the session timeout I am getting single error returns from my ajax request from the server:
> Working Request before:
> Request
> j_id1631913672_61450686 j_id1631913672_61450686
> j_id1631913672_61450686_S... 1
> javax.faces.ViewState XsWFBIdJ3cAipIW1n5/t3iVN5WSwWxZx2zbF0fTt/gvRo//LO3glFrGpAY8IMulyF7vG3zU1dN9lR7tFYcOwrVKKk107jlZKitmWUhl9XeNBb34eh5bt8QyDTVM=
> javax.faces.partial.ajax true
> javax.faces.partial.execu... menu @this
> javax.faces.source menu
> menu 1
> menu2 1
> Response
> <?xml version="1.0" encoding="utf-8"?><partial-response><changes><update id="javax.faces.ViewState"><![CDATA[XsWFBIdJ3cAipIW1n5/t3iVN5WSwWxZx2zbF0fTt/gvRo//LO3glFrGpAY8IMulyOsU+YvfYynFlR7tFYcOwrVKKk107jlZKdUuJGd3B0bumy+XxfxY80nPViy4=]]></update></changes></partial-response>
> After that following error request:
> j_id1631913672_61450686 j_id1631913672_61450686
> j_id1631913672_61450686_S... 1
> javax.faces.ViewState XsWFBIdJ3cAipIW1n5/t3iVN5WSwWxZx2zbF0fTt/gvRo//LO3glFrGpAY8IMulyOsU+YvfYynFlR7tFYcOwrVKKk107jlZKdUuJGd3B0bumy+XxfxY80nPViy4=
> javax.faces.partial.ajax true
> javax.faces.partial.execu... menu @this
> javax.faces.source menu
> menu 1
> menu2 1
> <?xml version="1.0" encoding="utf-8"?><partial-response><error><error-name>javax.faces.application.ViewExpiredException</error-name><error-message><![CDATA[/welcome.jsfNo saved view state could be found for the view identifier: /welcome.jsf]]></error-message></error></partial-response>
> And aftert hat I am getting a normal answer again:
> j_id1631913672_61450686 j_id1631913672_61450686
> j_id1631913672_61450686_S... 1
> javax.faces.ViewState XsWFBIdJ3cAipIW1n5/t3iVN5WSwWxZx2zbF0fTt/gvRo//LO3glFrGpAY8IMulyOsU+YvfYynFlR7tFYcOwrVKKk107jlZKdUuJGd3B0bumy+XxfxY80nPViy4=
> javax.faces.partial.ajax true
> javax.faces.partial.execu... menu @this
> javax.faces.source menu
> menu 1
> menu2 1
> <?xml version="1.0" encoding="utf-8"?><partial-response><changes><update id="javax.faces.ViewState"><![CDATA[XsWFBIdJ3cAipIW1n5/t3iVN5WSwWxZx2zbF0fTt/gvRo//LO3glFrGpAY8IMuly5RE5nlKK54RlR7tFYcOwrVKKk107jlZK6f7NdUZRuvvbL7VYnmj4v8VmnIQ=]]></update></changes></partial-response>
> As it is visible here the viewstate between the error and the visible request are the same, it is just that in the first instance it was not able to restore the view
> The error I have gotten on the console is as follows:
> javax.faces.application.ViewExpiredException: /welcome.jsfNo saved view state could be found for the view identifier: /welcome.jsf
> at org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:128)
> at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:171)
> at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
> at javax.faces.webapp.FacesServlet.service(FacesServlet.java:189)
> 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:680)
> The web.xml is as follows:
> <?xml version="1.0" encoding="UTF-8"?>
> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
> <context-param>
> <param-name>javax.faces.PROJECT_STAGE</param-name>
> <param-value>Development</param-value>
> </context-param>
> <context-param>
> <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
> <param-value>.xhtml</param-value>
> </context-param>
> <!--
> We need to set annotation lifecycyle provider manually as org.apache.myfaces.config.annotation.NoInjectionAnnotationLifecycleProvider.
> Other providers use some classes that are restricted on Google App Engine.
> -->
> <context-param>
> <param-name>org.apache.myfaces.config.annotation.LifecycleProvider</param-name>
> <param-value>org.apache.myfaces.config.annotation.NoInjectionAnnotationLifecycleProvider</param-value>
> </context-param>
> <!--
> Need to set a secret to avoid javax.crypto.BadPaddingException.
> "param-value" must be Base64 encoded.
> More details: http://wiki.apache.org/myfaces/Secure_Your_Application
> -->
> <!--
> <context-param>
> <param-name>org.apache.myfaces.SECRET</param-name>
> <param-value>NzY1NDMyMTA=</param-value>
> </context-param>
> -->
> <!-- Defines the secret (Base64 encoded) used to initialize the secret key
> for encryption algorithm. The size of it depends on the algorithm used for encryption -->
>
> <context-param>
> <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
> <param-value>server</param-value>
> </context-param>
> <servlet>
> <servlet-name>Faces Servlet</servlet-name>
> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
> <load-on-startup>1</load-on-startup>
> </servlet>
> <servlet-mapping>
> <servlet-name>Faces Servlet</servlet-name>
> <url-pattern>*.jsf</url-pattern>
> <url-pattern>/faces/*</url-pattern>
> </servlet-mapping>
> <session-config>
> <session-timeout>
> 30
> </session-timeout>
> </session-config>
> <welcome-file-list>
> <welcome-file>index.jsp</welcome-file>
> </welcome-file-list>
>
> </web-app>
> So the use encryption param is on default and no key overrides are set!
> The link to the app is as follows:
> http://people.apache.org/~werpu/tesinck4040.tar.bz2 (note that you have to remove the encryption param there from the web.xml)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.