wicket中的活动会话列表

时间:2012-02-08 10:13:50

标签: java tomcat wicket

我需要获得活动的wicket会话列表。现在我在覆盖方法newSession()中保存所有新会话,并且在会话失效时正在删除此会话。但是这种方法存在很多问题。我如何理解这种方法是非常粗鲁的黑客,如果你知道另一种方法,我将不胜感激。 (我使用wicket v1.5.4和tomcat v7.0.25)

更新

感谢您的回答,但我需要获取WICKET会话列表(WebSession)。我添加了HttpSessionListener和WebSessions和HttpSessions的静态映射(带同步)。这种方式比我好,并且没有旧问题,但它看起来也像是hack :(。你对获取wicket会话列表有什么想法吗?

2 个答案:

答案 0 :(得分:6)

使用简单的Listener是否可以接受,比如这样?

public class SessionCounterListener implements HttpSessionListener {

  private static int totalActiveSessions;

  public static int getTotalActiveSession(){
    return totalActiveSessions;
  }

  @Override
  public void sessionCreated(HttpSessionEvent event) {
    totalActiveSessions++;
 }

  @Override
  public void sessionDestroyed(HttpSessionEvent event) {
    totalActiveSessions--;
  } 
}


<web-app ...>
    <listener>
    <listener-class>SessionCounterListener</listener-class>
</listener>
</web-app>

“Wicket in action”一书中还有一个例子here

答案 1 :(得分:1)

另一种解决方案是使用JMX。如果您浏览到:

Catalina:type=Manager,context=/your_war_context,host=localhost

操作下,您会找到listSessionIds()方法。