java.lang.IllegalStateException: Please end the HttpSession via Seam.invalidateSession()
derkd Jul 8, 2009 1:17 PMHi all,
I use richfaces 3.1.6SR1 and Seam 1.2.1. I can't upgrade because I'm on Oracle AS which doesn't support JSF 1.2 :-(
The problem is when the session is expired and I click on a link which executes richfaces javascript I sometimes get this error:
08 Jul 2009 11:58:07,098 ERROR SeamPhaseListener:68 - uncaught exception java.lang.IllegalStateException: Please end the HttpSession via Seam.invalidateSession() at org.jboss.seam.contexts.Lifecycle.endSession(Lifecycle.java:269) at org.jboss.seam.servlet.SeamListener.sessionDestroyed(SeamListener.java:45) at com.evermind.server.http.HttpApplication.invalidateSession(HttpApplication.java:860) at com.evermind.server.http.EvermindHttpSession.invalidate(EvermindHttpSession.java:397) at com.evermind.server.http.EvermindHttpServletRequest.unprivileged_getSession(EvermindHttpS ervletRequest.java:2760) at com.evermind.server.http.EvermindHttpServletRequest.getSession(EvermindHttpServletRequest .java:2661) at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:26 0) at com.sun.faces.context.ExternalContextImpl.getSession(ExternalContextImpl.java:129) at org.jboss.seam.contexts.ContextAdaptor.getSession(ContextAdaptor.java:42) at org.jboss.seam.contexts.Lifecycle.beginRequest(Lifecycle.java:42) at org.jboss.seam.jsf.SeamPhaseListener.beforePhase(SeamPhaseListener.java:52) at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:228) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:110) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:213) at com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:64) at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141) at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281) at com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:15) at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:63) at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:60) at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49) at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45) at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49) at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:57) at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49) at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:79) at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49) at org.jboss.seam.web.SeamFilter.doFilter(SeamFilter.java:84) at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:62 1) at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatche r.java:370) at com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:871) at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:453) at com.evermind.server.http.HttpRequestHandler.serveOneRequest(HttpRequestHandler.java:221) at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:122) at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:111) at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java :260) at oracle.oc4j.network.ServerSocketAcceptHandler.procClientSocket(ServerSocketAcceptHandler. java:234) at oracle.oc4j.network.ServerSocketAcceptHandler.access$700(ServerSocketAcceptHandler.java:2 9) at oracle.oc4j.network.ServerSocketAcceptHandler$AcceptHandlerHorse.run(ServerSocketAcceptHa ndler.java:879) at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledE xecutor.java:303) at java.lang.Thread.run(Thread.java:595) 08 Jul 2009 11:58:07,114 ERROR SeamPhaseListener:75 - swallowing exception java.lang.IllegalStateException: Please end the HttpSession via Seam.invalidateSession() at org.jboss.seam.contexts.Lifecycle.endSession(Lifecycle.java:269) at org.jboss.seam.servlet.SeamListener.sessionDestroyed(SeamListener.java:45) at com.evermind.server.http.HttpApplication.invalidateSession(HttpApplication.java:860) at com.evermind.server.http.EvermindHttpSession.invalidate(EvermindHttpSession.java:397) at com.evermind.server.http.EvermindHttpServletRequest.unprivileged_getSession(EvermindHttpS ervletRequest.java:2760) at com.evermind.server.http.EvermindHttpServletRequest.getSession(EvermindHttpServletRequest .java:2661) at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:26 0) at com.sun.faces.context.ExternalContextImpl.getSession(ExternalContextImpl.java:129) at org.jboss.seam.contexts.ContextAdaptor.getSession(ContextAdaptor.java:42) at org.jboss.seam.contexts.Lifecycle.beginRequest(Lifecycle.java:42) at org.jboss.seam.jsf.SeamPhaseListener.beforePhase(SeamPhaseListener.java:52) at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:228) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:110) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:213) at com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:64) at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141) at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281) at com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:15) at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:63) at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:60) at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49) at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45) at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49) at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:57) at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49) at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:79) at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49) at org.jboss.seam.web.SeamFilter.doFilter(SeamFilter.java:84) at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:62 1) at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatche r.java:370) at com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:871) at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:453) at com.evermind.server.http.HttpRequestHandler.serveOneRequest(HttpRequestHandler.java:221) at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:122) at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:111) at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java :260) at oracle.oc4j.network.ServerSocketAcceptHandler.procClientSocket(ServerSocketAcceptHandler. java:234) at oracle.oc4j.network.ServerSocketAcceptHandler.access$700(ServerSocketAcceptHandler.java:2 9) at oracle.oc4j.network.ServerSocketAcceptHandler$AcceptHandlerHorse.run(ServerSocketAcceptHa ndler.java:879) at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledE xecutor.java:303) at java.lang.Thread.run(Thread.java:595) 08 Jul 2009 11:58:07,130 ERROR SeamPhaseListener:125 - uncaught exception java.lang.IllegalStateException: No application context active at org.jboss.seam.Component.forName(Component.java:1577) at org.jboss.seam.Component.getInstance(Component.java:1627) at org.jboss.seam.Component.getInstance(Component.java:1622) at org.jboss.seam.Component.getInstance(Component.java:1599) at org.jboss.seam.Component.getInstance(Component.java:1594) at org.jboss.seam.core.Manager.instance(Manager.java:269) at org.jboss.seam.jsf.AbstractSeamPhaseListener.afterRestoreView(AbstractSeamPhaseListener.j ava:53) at org.jboss.seam.jsf.SeamPhaseListener.afterPhase(SeamPhaseListener.java:95) at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:254) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:110) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:213) at com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:64) at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141) at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281) at com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:15) at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:63) at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:60) at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49) at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45) at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49) at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:57) at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49) at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:79) at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49) at org.jboss.seam.web.SeamFilter.doFilter(SeamFilter.java:84) at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:62 1) at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatche r.java:370) at com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:871) at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:453) at com.evermind.server.http.HttpRequestHandler.serveOneRequest(HttpRequestHandler.java:221) at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:122) at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:111) at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java :260) at oracle.oc4j.network.ServerSocketAcceptHandler.procClientSocket(ServerSocketAcceptHandler. java:234) at oracle.oc4j.network.ServerSocketAcceptHandler.access$700(ServerSocketAcceptHandler.java:2 9) at oracle.oc4j.network.ServerSocketAcceptHandler$AcceptHandlerHorse.run(ServerSocketAcceptHa ndler.java:879) at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledE xecutor.java:303) at java.lang.Thread.run(Thread.java:595) 08 Jul 2009 11:58:07,130 ERROR SeamPhaseListener:132 - swallowing exception java.lang.IllegalStateException: No application context active at org.jboss.seam.Component.forName(Component.java:1577) at org.jboss.seam.Component.getInstance(Component.java:1627) at org.jboss.seam.Component.getInstance(Component.java:1622) at org.jboss.seam.Component.getInstance(Component.java:1599) at org.jboss.seam.Component.getInstance(Component.java:1594) at org.jboss.seam.core.Manager.instance(Manager.java:269) at org.jboss.seam.jsf.AbstractSeamPhaseListener.afterRestoreView(AbstractSeamPhaseListener.j ava:53) at org.jboss.seam.jsf.SeamPhaseListener.afterPhase(SeamPhaseListener.java:95) at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:254) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:110) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:213) at com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:64) at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141) at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281) at com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:15) at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:63) at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:60) at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49) at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45) at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49) at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:57) at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49) at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:79) at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49) at org.jboss.seam.web.SeamFilter.doFilter(SeamFilter.java:84) at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:62 1) at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatche r.java:370) at com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:871) at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:453) at com.evermind.server.http.HttpRequestHandler.serveOneRequest(HttpRequestHandler.java:221) at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:122) at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:111) at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java :260) at oracle.oc4j.network.ServerSocketAcceptHandler.procClientSocket(ServerSocketAcceptHandler. java:234) at oracle.oc4j.network.ServerSocketAcceptHandler.access$700(ServerSocketAcceptHandler.java:2 9) at oracle.oc4j.network.ServerSocketAcceptHandler$AcceptHandlerHorse.run(ServerSocketAcceptHa ndler.java:879) at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledE xecutor.java:303) at java.lang.Thread.run(Thread.java:595) 08 Jul 2009 11:58:07,130 ERROR ExceptionFilter:67 - uncaught exception java.lang.IllegalStateException: Session was invalidated at com.evermind.server.http.EvermindHttpSession.invalidate(EvermindHttpSession.java:391) at com.evermind.server.http.EvermindHttpServletRequest.unprivileged_getSession(EvermindHttpS ervletRequest.java:2760) at com.evermind.server.http.EvermindHttpServletRequest.getSession(EvermindHttpServletRequest .java:2661) at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:26 0) at com.sun.faces.context.ExternalContextImpl.getSession(ExternalContextImpl.java:129) at org.ajax4jsf.application.AjaxStateManager.restoreStateFromSession(AjaxStateManager.java:3 11) at org.ajax4jsf.application.AjaxStateManager.restoreView(AjaxStateManager.java:243) at org.jboss.seam.jsf.SeamStateManager.restoreView(SeamStateManager.java:49) at com.sun.faces.application.ViewHandlerImpl.restoreView(ViewHandlerImpl.java:250) at com.sun.facelets.FaceletViewHandler.restoreView(FaceletViewHandler.java:310) at org.ajax4jsf.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:116) at org.ajax4jsf.application.AjaxViewHandler.restoreView(AjaxViewHandler.java:159) at org.jboss.seam.jsf.SeamViewHandler.restoreView(SeamViewHandler.java:64) at com.sun.facelets.FaceletViewHandler.restoreView(FaceletViewHandler.java:310) at com.sun.facelets.FaceletViewHandler.restoreView(FaceletViewHandler.java:310) at org.ajax4jsf.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:116) at org.ajax4jsf.application.AjaxViewHandler.restoreView(AjaxViewHandler.java:159) at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:177) at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:245) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:110) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:213) at com.evermind.server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:64) at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141) at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281) at com.evermind.server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:15) at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:63) at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:60) at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49) at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45) at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49) at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:57) at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49) at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:79) at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49) at org.jboss.seam.web.SeamFilter.doFilter(SeamFilter.java:84) at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:62 1) at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatche r.java:370) at com.evermind.server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:871) at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:453) at com.evermind.server.http.HttpRequestHandler.serveOneRequest(HttpRequestHandler.java:221) at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:122) at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:111) at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java :260) at oracle.oc4j.network.ServerSocketAcceptHandler.procClientSocket(ServerSocketAcceptHandler. java:234) at oracle.oc4j.network.ServerSocketAcceptHandler.access$700(ServerSocketAcceptHandler.java:2 9) at oracle.oc4j.network.ServerSocketAcceptHandler$AcceptHandlerHorse.run(ServerSocketAcceptHa ndler.java:879) at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledE xecutor.java:303) at java.lang.Thread.run(Thread.java:595)
This results in an internal server error. I need to close all browser and start a new browser session to use the web app again.
What can be the problem? Also adding an exception in the pages.xml isn't working.
my pages.xml looks like this:
<!DOCTYPE pages PUBLIC
"-//JBoss/Seam Pages Configuration DTD 1.2//EN"
"http://jboss.com/products/seam/pages-1.2.dtd">
<pages no-conversation-view-id="/index.xhtml"
login-view-id="/login.xhtml">
<page view-id="*">
<navigation>
<rule if-outcome="home">
<redirect view-id="/index.xhtml"/>
</rule>
</navigation>
</page>
<page view-id="/beroepen/lettercombinatie.xhtml"
no-conversation-view-id="/timeout.xhtml"/>
<exception class="org.jboss.seam.framework.EntityNotFoundException">
<redirect view-id="/error.xhtml">
<message severity="warn">Record not found</message>
</redirect>
</exception>
<exception class="javax.persistence.EntityNotFoundException">
<redirect view-id="/error.xhtml">
<message severity="warn">Record not found</message>
</redirect>
</exception>
<exception class="javax.persistence.EntityExistsException">
<redirect view-id="/error.xhtml">
<message severity="warn">Duplicate record</message>
</redirect>
</exception>
<exception class="javax.persistence.OptimisticLockException">
<end-conversation/>
<redirect view-id="/error.xhtml">
<message severity="warn">Another user changed the same data, please try again</message>
</redirect>
</exception>
<exception class="org.jboss.seam.security.AuthorizationException">
<redirect view-id="/error.xhtml">
<message severity="error">You don't have permission to access this resource</message>
</redirect>
</exception>
<exception class="org.jboss.seam.security.NotLoggedInException">
<redirect view-id="/login.xhtml">
<message severity="warn">#{messages['org.jboss.seam.NotLoggedIn']}</message>
</redirect>
</exception>
<exception class="javax.faces.application.ViewExpiredException">
<redirect view-id="/timeout.xhtml">
<message severity="warn">Your session has timed out, please try again</message>
</redirect>
</exception>
<exception class="org.jboss.seam.ConcurrentRequestTimeoutException" log-level="trace">
<http-error error-code="503" />
</exception>
<exception>
<redirect view-id="/error.xhtml">
<message severity="error">Unexpected error, please try again</message>
</redirect>
</exception>
<exception class="org.jboss.seam.conversationTimeout">
<redirect view-id="../timeout.xhtml">
<message severity="warn">Your session has timed out, please try again</message>
</redirect>
</exception>
<exception class="java.lang.IllegalStateException">
<redirect view-id="../error.xhtml">
<message severity="error">java.lang.IllegalStateException: Probaly Your session has timed out, please try again</message>
</redirect>
</exception>
<page view-id="/beroepen/index.xhtml">
<navigation>
<rule if-outcome="openBeroepSBC">
<redirect view-id="/beroepen/index.xhtml">
<param name="beroep_cd" value="#{SBCTreeBean.selectedBeroep.cdBeroepsnaam}" />
<param name="pollingEnabled" value="#{true}" />
</redirect>
</rule>
</navigation>
</page>
<page view-id="/opleidingen/index.xhtml">
<navigation>
<rule if-outcome="openOpleidingSOI">
<redirect view-id="/opleidingen/index.xhtml">
<param name="opleiding_cd" value="#{SOITreeBean.selectedOpleiding.cdOpleidingsnaam}" />
<param name="pollingEnabled" value="#{true}" />
</redirect>
</rule>
</navigation>
</page>
</pages>My web.xml:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <!-- Seam --> <listener> <listener-class>org.jboss.seam.servlet.SeamListener</listener-class> </listener> <filter> <filter-name>Seam Filter</filter-name> <filter-class>org.jboss.seam.web.SeamFilter</filter-class> </filter> <filter-mapping> <filter-name>Seam Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <!-- Faces Servlet Mapping --> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.seam</url-pattern> </servlet-mapping> <servlet> <servlet-name>Seam Remoting</servlet-name> <servlet-class>org.jboss.seam.remoting.SeamRemotingServlet</servlet-class> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Seam Remoting</servlet-name> <url-pattern>/seam/remoting/*</url-pattern> </servlet-mapping> <servlet> <servlet-name>Seam Resource Servlet</servlet-name> <servlet-class>org.jboss.seam.servlet.ResourceServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Seam Resource Servlet</servlet-name> <url-pattern>/seam/resource/*</url-pattern> </servlet-mapping> <context-param> <param-name>javax.faces.STATE_SAVING_METHOD</param-name> <param-value>server</param-value> </context-param> <context-param> <param-name>facelets.DEVELOPMENT</param-name> <param-value>true</param-value> </context-param> <context-param> <param-name>javax.faces.DEFAULT_SUFFIX</param-name> <param-value>.xhtml</param-value> </context-param> <!-- <listener> <listener-class>com.sun.faces.config.ConfigureListener</listener-class> </listener>--> <!-- Plugging the "Blue Sky" skin into the project --> <context-param> <param-name>org.richfaces.SKIN</param-name> <param-value>blueSky</param-value> </context-param> <!-- Making the RichFaces skin spread to standard HTML controls --> <context-param> <param-name>org.richfaces.CONTROL_SKINNING</param-name> <param-value>enable</param-value> </context-param> <context-param> <param-name>org.ajax4jsf.VIEW_HANDLERS</param-name> <param-value>org.jboss.seam.ui.facelet.SeamFaceletViewHandler</param-value> </context-param> <!-- Defining and mapping the RichFaces filter --> <filter> <display-name>RichFaces Filter</display-name> <filter-name>richfaces</filter-name> <filter-class>org.ajax4jsf.Filter</filter-class> </filter> <filter-mapping> <filter-name>richfaces</filter-name> <servlet-name>Faces Servlet</servlet-name> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>INCLUDE</dispatcher> </filter-mapping> <context-param> <param-name>org.ajax4jsf.handleViewExpiredOnClient</param-name> <param-value>false</param-value> </context-param> <security-constraint> <display-name>Restrict raw XHTML Documents</display-name> <web-resource-collection> <web-resource-name>XHTML</web-resource-name> <url-pattern>*.xhtml</url-pattern> </web-resource-collection> <auth-constraint/> </security-constraint> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> <session-config> <session-timeout>1</session-timeout> </session-config> </web-app>
I know about the A4J.AJAX.onExpired function.
I overrided the method and added it to my template. This works now and then.
layout.xhtml looks like this:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<f:subview contentType="text/html"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:s="http://jboss.com/products/seam/taglib">
<div class="body">
<a4j:region>
<script language="javascript">
A4J.AJAX.onExpired = function(loc, expiredMsg){
//alert('Uw sessie is verlopen (Layout)! U wordt teruggeleid naar deze pagina: '+loc);
//return loc;
//window.location = "../timeout.seam";
return "../timeout.seam";
}
</script>
</a4j:region>
<ui:insert name="body"/>
</div>
</f:subview>I really need to fix this, so all the help is welcome.
Regards,
Derk