Jsf 为什么我的httpsession会过期?

Jsf 为什么我的httpsession会过期?,jsf,primefaces,glassfish,httpsession,Jsf,Primefaces,Glassfish,Httpsession,我是JSF新手,遇到了一个有趣的问题。我有一个web应用程序,指定了会话超时,即使我执行了操作,会话也会过期。据我所知,每一个新的请求都会重新启动超时计数器,但事实并非如此。另外,在开发过程中,我注意到,超时后(重定向到登录页面),如果我重新加载页面,会话仍然有效。会话Id相同,计数器仍在运行。。。我不知道怎么了,我用的是玻璃鱼和素面 我在谷歌上搜索了很多,甚至试图捕捉ViewExpiredException,但都没有运气。重定向是使用 <meta http-equiv="refresh"

我是JSF新手,遇到了一个有趣的问题。我有一个web应用程序,指定了会话超时,即使我执行了操作,会话也会过期。据我所知,每一个新的请求都会重新启动超时计数器,但事实并非如此。另外,在开发过程中,我注意到,超时后(重定向到登录页面),如果我重新加载页面,会话仍然有效。会话Id相同,计数器仍在运行。。。我不知道怎么了,我用的是玻璃鱼和素面

我在谷歌上搜索了很多,甚至试图捕捉ViewExpiredException,但都没有运气。重定向是使用

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

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

i、 例如,如果
session.maxInactiveInterval
的值为
5
,则页面将在5秒内刷新,并重定向到
login.jsf?reason=expired
,而不管您执行了什么操作。只有页面刷新才会重置计数器

了解有关元标记的更多信息


如果您想实现空闲监视器,我建议您在

上查看一下
,非常感谢!它解决了我的问题:)我认为使用元标记可以保持会话处理的行为不变。