Java Wicket会话到期

Java Wicket会话到期,java,wicket,Java,Wicket,我正在为会话使用一个类,它扩展了org.apache.wicket.protocol.http.WebSession; 我需要在由于注销或超时而导致会话过期时调用一个方法。但我什么也没找到。我该怎么做呢?您可以在Wicket关卡上这样做: 通过覆盖SessionStore实现-覆盖应用程序#newSessionStore() 但这有一个缺点:当会话过期(由servlet容器构造)时,不会调用此代码。换句话说,您只能处理wicket本身引起的会话破坏事件 在全局级别上,您可以使用ServletAP

我正在为会话使用一个类,它扩展了org.apache.wicket.protocol.http.WebSession;
我需要在由于注销或超时而导致会话过期时调用一个方法。但我什么也没找到。我该怎么做呢?

您可以在Wicket关卡上这样做:

通过覆盖SessionStore实现-覆盖应用程序#newSessionStore()

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

在全局级别上,您可以使用ServletAPI——您可以对会话破坏事件做出反应,不管它是由什么触发的

HttpSesionListener#sessionDestroyed(HttpSessionEvent se)
并将其写入WEB-INF/WEB.xml

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

您的.listener.class.full.qualified.name

Session.java有一个回调方法,当用户会话无效或由于HttpSession过期时执行该方法

public void onInvalidate(){
}

通过告诉我们会话过期时您必须执行的操作来帮助我们。。这可能有助于找到问题的解决方案。作为旁注:您是否可以通过捕获PageExpiredException(可能出现也可能不出现)来处理“您需要做的任何事情”?此答案优于2009年的另一个答案,因为它满足了会话可能失效的两种情况。来自Wicket 6.x doco:“当用户会话通过显式调用invalidate()或由于HttpSession过期而无效时执行的回调方法。”
public void onInvalidate(){
}