Wicket会话到期

时间:2009-07-26 07:44:39

标签: java wicket

我正在使用一个扩展org.apache.wicket.protocol.http.WebSession的会话类; 由于注销或超时,我需要一个在会话到期时调用的方法。但我一无所获。我该怎么办?

2 个答案:

答案 0 :(得分:7)

你可以在Wicket级别上这样做:

通过覆盖SessionStore实现 - 覆盖Application#newSessionStore()

 @Override
 protected ISessionStore newSessionStore() {
        return new SecondLevelCacheSessionStore(this, new DiskPageStore()) {

            @Override
            protected void onUnbind(String sessionId) {
                // this code is called when wicket call httpSession.invalidate()
            }

        };
    }

但这有一个缺点:当会话到期时(由servlet容器控制),将不会调用此代码。换句话说 - 你只能处理由wicket本身引起的会话破坏事件。

在全局级别,您可以使用Servlet API的HttpSessionListener - 您可以对会话销毁事件作出反应,无论它是由

触发的。
HttpSesionListener#sessionDestroyed(HttpSessionEvent se)

并将其写入您的WEB-INF / web.xml

<listener>
  <listener-class>
     your.listener.class.full.qualified.name
  </listener-class>
</listener>

答案 1 :(得分:1)

Session.java有一个回调方法,该方法在用户会话失效或由于HttpSession到期时执行。

public void onInvalidate(){
}