Список активных сессий в калитке - PullRequest
2 голосов
/ 08 февраля 2012

Мне нужно получить список активных сессий калитки. Теперь я сохраняю весь новый сеанс в методе переопределения newSession (), и этот сеанс удалялся, когда сеанс был признан недействительным. Но у этого метода было много проблем. Насколько я понимаю, этот метод был очень грубым, и если вы знаете другой метод, я буду благодарен. (Я использую wicket v1.5.4 и tomcat v7.0.25)

Обновление

Спасибо за ваши ответы, но мне нужно получить список сеансов WICKET (WebSession). Я добавил HttpSessionListener со статическими картами WebSessions и HttpSessions (с синхронизацией). Этот способ лучше моего и не имеет старых проблем, но выглядит также как взлом :(. Есть ли у вас какие-либо идеи по поводу получения списка сеансов калитки?

Ответы [ 2 ]

6 голосов
/ 08 февраля 2012

Будет ли это приемлемо с простым Слушателем вместо этого, что-то вроде этого?

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>

Есть также пример из книги "Калитка в действии" здесь

1 голос
/ 08 февраля 2012

Другим решением является использование JMX.Если вы просматриваете:

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

В разделе Операции вы найдете метод listSessionIds().

...