为什么我的httpsession到期了?

时间:2012-11-20 12:18:25

标签: jsf primefaces glassfish httpsession

我是JSF的新手,我遇到了一个有趣的问题。我有一个Web应用程序,指定了会话超时,即使我做了操作,会话也会过期。据我所知,每个新请求都会重新启动超时计数器,但它没有发生。此外,在开发过程中我注意到,在超时(重定向到登录页面)后,如果我重新加载页面,会话仍然有效。相同的会话ID,计数器仍然...我不知道有什么问题,我正在使用Glassfish和PrimeFaces。

我google了很多,甚至试图抓住ViewExpiredException,但没有运气。重定向使用

完成
<meta http-equiv="refresh" content="#{session.maxInactiveInterval};url=login.jsf?reason=expired>

方法。也许我错过了web.xml中显而易见的一些东西,我的想法不足。

请给我一些建议,非常感谢你!

1 个答案:

答案 0 :(得分:2)

您使用的方法不是最适合实现会话超时的原因,原因是元标记会在特定时间间隔内刷新页面,在您的情况下,它会在刷新时重定向到另一个URL,

即,如果session.maxInactiveInterval的值为5,则该页面将在5秒后刷新并重定向到login.jsf?reason=expired,无论您采取何种操作。只有页面刷新才会重置计数器。

详细了解元标记here

如果您想实现空闲显示器,建议您查看Primefaces showcase - IdleMonitor上的<p:idleMonitor>