Hasan
Thanks for writing wonderful article. Infact i already implemented your
article but it doesnt get pass thru ViewExpiredException. Here is the
sequence of events happening when session times out
>From the log i see
1) The Listener displays session destroyed
2) The session timeout Filter doesnt fire for some reason and doesnt do
redirect . I have the following mapping in web.xml
<filter-name>SessionTimeoutFilter</filter-name>
<filter-class>com.boeing.nmt.nams.view.util.SessionTimeoutFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>SessionTimeoutFilter</filter-name>
<url-pattern>*.faces</url-pattern>
</filter-mapping>
3) It goes back to LoginPhaseListener from where it throws
ViewExpiredException on session Timeout
Hasan Turksoy wrote:
>
> this
> entry<http://www.jroller.com/hasant/entry/jsf_logout_and_redirect_user>may
> help you to build a session timeout handling infrastructure... also,
> you
> can handle ajax requests by this session expired controller filter...
>
> Regards,
>
> Hasan...
> www.jroller.com/hasant
>
>
>
> On Mon, Jul 21, 2008 at 11:58 PM, bansi <[EMAIL PROTECTED]> wrote:
>
>>
>> Thanks for your suggestion. I am planning to write a filter but before
>> that
>> i
>> have to get rid of ViewExpired Excpetion. Any pointers/suggestions to
>> resolve the error will be greatly appreciated
>> Here is the stack trace
>> 2008-07-21 13:15:35,988 ERROR [javax.faces.webapp._ErrorPageWriter] - <An
>> exception occurred>
>> javax.faces.application.ViewExpiredException:
>> /addressRegistryForm.facesThe
>> expected view was not returned for the view identifier:
>> /addressRegistryForm.faces
>> at
>>
>> org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:88)
>> at
>>
>> org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:103)
>> at
>> org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:76)
>> at javax.faces.webapp.FacesServlet.service(FacesServlet.java:148)
>> at
>>
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
>> at
>>
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>> at
>>
>> org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
>> at
>>
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
>> at
>>
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>> at
>> org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:147)
>> at
>> org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:256)
>> at
>>
>> org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:362)
>> at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:488)
>> at
>>
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
>> at
>>
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>> at
>>
>> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
>> at
>>
>> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
>> at
>>
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
>> at
>>
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>> at
>>
>> com.boeing.nmt.nams.view.util.SecurityFilter.doFilter(SecurityFilter.java:59)
>> at
>>
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
>> at
>>
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>> at
>> com.boeing.nmt.nams.view.util.MessageFilter.doFilter(MessageFilter.java:71)
>> at
>>
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
>> at
>>
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>> at
>>
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
>> at
>>
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
>> at
>>
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
>> at
>>
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
>> at
>>
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
>> at
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
>> at
>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
>> at
>>
>> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
>> at
>>
>> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
>> at
>>
>> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
>> at
>>
>> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
>> at java.lang.Thread.run(Thread.java:595)
>>
>>
>> bansi wrote:
>> >
>> > I am using Myfaces 1.2.2 ( JSF 1.2) and PhaseListener approach as
>> > suggested by Cagatay Civici in one of his articles i.e.
>> >
>> http://cagataycivici.wordpress.com/2005/12/30/jsf_with_ajax_phase_listener/
>> >
>> > If the session times out, JSF throws a ViewExpiredException during the
>> > RESTORE_VIEW phase.
>> >
>> >
>> > Here is the snippet from my LoginPhaseListener. The exception is thrown
>> > from afterPhase method
>> >
>> > /**
>> > * After phase.
>> > *
>> > * @param pe
>> > * the pe
>> > * @see
>> >
>> javax.faces.event.PhaseListener#afterPhase(javax.faces.event.PhaseEvent)
>> > */
>> > public void afterPhase(final PhaseEvent pe)
>> > {
>> > final FacesContext facesContext = pe.getFacesContext();
>> > final String viewId =
>> > pe.getFacesContext().getViewRoot().getViewId();// Throws Exception
>> > if (viewId.endsWith("login.xhtml"))
>> > {
>> > final String managedBeanName =
>> > getManagedBeanNameFromView(viewId);
>> > final Object object =
>> > facesContext.getApplication().createValueBinding("#{" + managedBeanName
>> +
>> > "}")
>> > .getValue(facesContext);
>> > if (object == null)
>> > {
>> > logger.error("OnPageLoad cannot be executed, no such
>> > managed bean:" + managedBeanName);
>> > } else
>> > {
>> > final Login loginBean = (Login) object;
>> > loginBean.onPageLoad();
>> > }
>> > } else
>> > {
>> > final String managedBeanName =
>> > getManagedBeanNameFromView(viewId);
>> > final String BackingBeanName = managedBeanName.substring(0,
>> > 1).toUpperCase()
>> > + managedBeanName.substring(1,
>> > managedBeanName.length());
>> > }
>> > }
>> >
>> >
>> > /**
>> > * Gets the managed bean name from view.
>> > *
>> > * @param viewId
>> > * the view id
>> > * @return the managed bean name from view
>> > */
>> > public String getManagedBeanNameFromView(final String viewId)
>> > {
>> > String pageName;
>> > if (viewId.endsWith("login.xhtml"))
>> > {
>> > pageName = viewId.substring(1, viewId.length() - 6);
>> > } else
>> > {
>> > pageName = viewId.substring(1, viewId.length() - 10);
>> > }
>> > return pageName + "Bean";
>> > }
>> >
>> > Here is the stack trace
>> >
>> > 2008-07-15 10:31:12,192 ERROR
>> > [org.apache.myfaces.lifecycle.PhaseListenerManager] - <Exception in
>> > PhaseListener RESTORE_VIEW(1) afterPhase>
>> > java.lang.NullPointerException
>> > at
>> >
>> com.boeing.nmt.nams.view.util.LoginPhaseListener.afterPhase(LoginPhaseListener.java:47)
>> > at
>> >
>> org.apache.myfaces.lifecycle.PhaseListenerManager.informPhaseListenersAfter(PhaseListenerManager.java:92)
>> > at
>> >
>> org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:107)
>> > at
>> >
>> org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:76)
>> > at javax.faces.webapp.FacesServlet.service(FacesServlet.java:148)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>> > at
>> >
>> org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>> > at
>> org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:147)
>> > at
>> org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:256)
>> > at
>> >
>> org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:362)
>> > at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:488)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>> > at
>> >
>> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
>> > at
>> >
>> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>> > at
>> >
>> com.boeing.nmt.nams.view.util.SecurityFilter.doFilter(SecurityFilter.java:59)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>> > at
>> >
>> com.boeing.nmt.nams.view.util.MessageFilter.doFilter(MessageFilter.java:71)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>> > at
>> >
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
>> > at
>> >
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
>> > at
>> >
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
>> > at
>> >
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
>> > at
>> >
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
>> > at
>> >
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
>> > at
>> >
>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
>> > at
>> >
>> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
>> > at
>> >
>> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
>> > at
>> >
>> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
>> > at
>> >
>> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
>> > at java.lang.Thread.run(Thread.java:595)
>> > 2008-07-15 10:31:12,348 ERROR [javax.faces.webapp._ErrorPageWriter] -
>> <An
>> > exception occurred>
>> > javax.faces.application.ViewExpiredException: /deviceForm.facesThe
>> > expected view was not returned for the view identifier:
>> /deviceForm.faces
>> > at
>> >
>> org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:88)
>> > at
>> >
>> org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:103)
>> > at
>> >
>> org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:76)
>> > at javax.faces.webapp.FacesServlet.service(FacesServlet.java:148)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>> > at
>> >
>> org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>> > at
>> org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:147)
>> > at
>> org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:256)
>> > at
>> >
>> org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:362)
>> > at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:488)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>> > at
>> >
>> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
>> > at
>> >
>> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>> > at
>> >
>> com.boeing.nmt.nams.view.util.SecurityFilter.doFilter(SecurityFilter.java:59)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>> > at
>> >
>> com.boeing.nmt.nams.view.util.MessageFilter.doFilter(MessageFilter.java:71)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>> > at
>> >
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
>> > at
>> >
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
>> > at
>> >
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
>> > at
>> >
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
>> > at
>> >
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
>> > at
>> >
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
>> > at
>> >
>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
>> > at
>> >
>> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
>> > at
>> >
>> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
>> > at
>> >
>> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
>> > at
>> >
>> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
>> > at java.lang.Thread.run(Thread.java:595)
>> > 2008-07-15 10:31:12,348 ERROR [javax.faces.webapp._ErrorPageWriter] -
>> <An
>> > exception occurred>
>> > javax.faces.application.ViewExpiredException: /deviceForm.facesThe
>> > expected view was not returned for the view identifier:
>> /deviceForm.faces
>> > at
>> >
>> org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:88)
>> > at
>> >
>> org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:103)
>> > at
>> >
>> org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:76)
>> > at javax.faces.webapp.FacesServlet.service(FacesServlet.java:148)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>> > at
>> >
>> org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>> > at
>> org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:147)
>> > at
>> org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:256)
>> > at
>> >
>> org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:362)
>> > at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:488)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>> > at
>> >
>> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
>> > at
>> >
>> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>> > at
>> >
>> com.boeing.nmt.nams.view.util.SecurityFilter.doFilter(SecurityFilter.java:59)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>> > at
>> >
>> com.boeing.nmt.nams.view.util.MessageFilter.doFilter(MessageFilter.java:71)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
>> > at
>> >
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>> > at
>> >
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
>> > at
>> >
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
>> > at
>> >
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
>> > at
>> >
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
>> > at
>> >
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
>> > at
>> >
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
>> > at
>> >
>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
>> > at
>> >
>> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
>> > at
>> >
>> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
>> > at
>> >
>> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
>> > at
>> >
>> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
>> > at java.lang.Thread.run(Thread.java:595)
>> > 2008-07-15 10:31:12,348 WARN
>> > [org.apache.myfaces.renderkit.html.util.DefaultAddResource] - <MyFaces
>> > special javascript could not be retrieved from request-map.>
>> >
>> >
>>
>> --
>> View this message in context:
>> http://www.nabble.com/Session-timeout-results-in-javax.faces.application.ViewExpiredException-tp18518805p18577449.html
>> Sent from the MyFaces - Users mailing list archive at Nabble.com.
>>
>>
>
>
--
View this message in context:
http://www.nabble.com/Session-timeout-results-in-javax.faces.application.ViewExpiredException-tp18518805p18613250.html
Sent from the MyFaces - Users mailing list archive at Nabble.com.