I am able to provoke the following exception in the sample app (as deployed at http://spring.ervacon.com/swf-booking-jsf ) - after the flow gets into this condition it becomes unusable, must discard and restart. I can't be 100% about the steps to reproduce this, but it seems to be related to letting the flow expire through timing out, although if so the timeout must be fairly short (on the order of a couple of minutes).
In general if the flow is simply left, the behaviour on flow transitions once expired is simply to refresh the current page with empty fields. However, it seems sometimes the behaviour degenerates into this following exception:
exception
javax.servlet.ServletException: Servlet execution threw an exception
org.springframework.faces.webflow.FlowSystemCleanupFilter.doFilterInternal(FlowSystemCleanupFilter.java:41)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
root cause
java.lang.NoClassDefFoundError: Could not initialize class com.sun.el.util.MessageFactory
com.sun.el.parser.AstValue.getTarget(Unknown Source)
com.sun.el.parser.AstValue.getType(Unknown Source)
com.sun.el.ValueExpressionImpl.getType(Unknown Source)
com.sun.facelets.el.TagValueExpression.getType(TagValueExpression.java:60)
com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:81)
javax.faces.component.UIInput.getConvertedValue(UIInput.java:934)
javax.faces.component.UIInput.validate(UIInput.java:860)
javax.faces.component.UIInput.executeValidate(UIInput.java:1065)
javax.faces.component.UIInput.processValidators(UIInput.java:666)
javax.faces.component.UIForm.processValidators(UIForm.java:229)
javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1030)
javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:662)
com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:100)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
org.springframework.faces.webflow.FlowSystemCleanupFilter.doFilterInternal(FlowSystemCleanupFilter.java:41)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.23 logs.
btw, I thought the sample was only compatible with Tomcat 6.x?
The problem is most likely related to the 2 minute session timeout configured on the server. We will have a better error message for this case in the upcoming m2.
Antranig Basman opened SWF-401 and commented
I am able to provoke the following exception in the sample app (as deployed at http://spring.ervacon.com/swf-booking-jsf ) - after the flow gets into this condition it becomes unusable, must discard and restart. I can't be 100% about the steps to reproduce this, but it seems to be related to letting the flow expire through timing out, although if so the timeout must be fairly short (on the order of a couple of minutes).
In general if the flow is simply left, the behaviour on flow transitions once expired is simply to refresh the current page with empty fields. However, it seems sometimes the behaviour degenerates into this following exception:
exception javax.servlet.ServletException: Servlet execution threw an exception org.springframework.faces.webflow.FlowSystemCleanupFilter.doFilterInternal(FlowSystemCleanupFilter.java:41) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
root cause java.lang.NoClassDefFoundError: Could not initialize class com.sun.el.util.MessageFactory com.sun.el.parser.AstValue.getTarget(Unknown Source) com.sun.el.parser.AstValue.getType(Unknown Source) com.sun.el.ValueExpressionImpl.getType(Unknown Source) com.sun.facelets.el.TagValueExpression.getType(TagValueExpression.java:60) com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:81) javax.faces.component.UIInput.getConvertedValue(UIInput.java:934) javax.faces.component.UIInput.validate(UIInput.java:860) javax.faces.component.UIInput.executeValidate(UIInput.java:1065) javax.faces.component.UIInput.processValidators(UIInput.java:666) javax.faces.component.UIForm.processValidators(UIForm.java:229) javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1030) javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:662) com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:100) com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251) com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117) javax.faces.webapp.FacesServlet.service(FacesServlet.java:244) org.springframework.faces.webflow.FlowSystemCleanupFilter.doFilterInternal(FlowSystemCleanupFilter.java:41) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.23 logs.
btw, I thought the sample was only compatible with Tomcat 6.x?
Affects: 2.0 M1
Issue Links:
1075 Introduce Flow controller exception handling
("depends on")