我的应用程序上有一个页面,其中有一个持续2分钟的AbstractAjaxTimerBehaviour。我的应用程序会话过期时间为30分钟(在web.xml文件中配置)。但是,我的会话不能过期,因为这种行为使它保持活跃状态。我能做些什么来解决这个问题?AbstractAjaxTimerBehaviour防止会话过期
感谢您的任何帮助。
我的应用程序上有一个页面,其中有一个持续2分钟的AbstractAjaxTimerBehaviour。我的应用程序会话过期时间为30分钟(在web.xml文件中配置)。但是,我的会话不能过期,因为这种行为使它保持活跃状态。我能做些什么来解决这个问题?AbstractAjaxTimerBehaviour防止会话过期
感谢您的任何帮助。
你可以做一些魔术,并在AbstractAjaxTimerBehavior
和尝试HttpSession
与setMaxInactiveInterval()
和getLastAccessedTime()
一些事情。
例如,如果你是在计时器的行为(伪代码):
actualSessionLength = now() - getLastAccessedTime();
session.setmaxInactiveInterval(getMaxInactiveInterval() - actualSessionLength);
但它可能是在计时器行为来不及缩短maxInactiveInterval。也许你可以早些在IAjaxCallListener
?在AjaxTimerBehavior之后,你必须再次设置30分钟作为inactiveTimeInterval。
我认为这将很难实现。
你可以自行失效与另一AbstractAjaxTimerBehavior会话:
add(new AbstractAjaxTimerBehavior(Duration.seconds(300)) {
@Override
protected void onTimer(AjaxRequestTarget target) {
// Get current page
Page page = target.getPage();
// invalidate session
page.getSession().invalidate();
// Goto LoginPage
page.setResponsePage(YourLoginPage.class);
}
});