2014-09-18 98 views
0

我的應用程序上有一個頁面,其中有一個持續2分鐘的AbstractAjaxTimerBehaviour。我的應用程序會話過期時間爲30分鐘(在web.xml文件中配置)。但是,我的會話不能過期,因爲這種行爲使它保持活躍狀態​​。我能做些什麼來解決這個問題?AbstractAjaxTimerBehaviour防止會話過期

感謝您的任何幫助。

回答

0

你可以做一些魔術,並在AbstractAjaxTimerBehavior和嘗試HttpSessionsetMaxInactiveInterval()getLastAccessedTime()一些事情。

例如,如果你是在計時器的行爲(僞代碼):

actualSessionLength = now() - getLastAccessedTime(); 
session.setmaxInactiveInterval(getMaxInactiveInterval() - actualSessionLength); 

但它可能是在計時器行爲來不及縮短maxInactiveInterval。也許你可以早些在IAjaxCallListener?在AjaxTimerBehavior之後,你必須再次設置30分鐘作爲inactiveTimeInterval。

我認爲這將很難實現。

0

你可以自行失效與另一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); 
    } 
});