Policz aktywne sesje w aplikacji J2EE wdrożonej na JBoss 3.2.1

Zarządzam aplikacją J2EE wdrożoną na JBoss 3.2.1. W ramach mojej usługi dla mojego klienta chcę dostarczyć raporty, które pokazują liczbę aktywnych sesji. Zaimplementowałem prostą klasę i stronę JSP, które pobierają liczbę aktywnych sesji, ale odkryłem lukę: proces sprawdzania samej liczby sesji tworzy nową sesję, a zatem zwiększa liczbę sesji.

Oto kod mojej klasy:

package com.hudsongates;

import javax.servlet.http.*;

public class SessionCount implements HttpSessionListener
{
  private static int numberOfSessions = 0;

  public void sessionCreated (HttpSessionEvent evt)
  {
    numberOfSessions++;
  }

  public void sessionDestroyed (HttpSessionEvent evt)
  {
    numberOfSessions--;
  }

  // here is our own method to return the number of current sessions
  public static int getNumberOfSessions()
  {
    return numberOfSessions;
  }

}

Strona JSP wygląda tak:

<html>
<head>
<title>Active Sessions</title>
</head>
<body>
activeSessions=<%=com.hudsongates.SessionCount.getNumberOfSessions()%>
</body>
</html>

Chciałbym nieco zmienić podejście, aby zamiast używać strony JSP, używać prostego pliku wsadowego. Na przykład utworzyłem plik wsadowy o nazwie getSessions.bat:

REM Setup environment
call environment.bat

set LOG_PATH=%INSTALL_PATH%\log
set =%INSTALL_PATH%\lib\app.jar
set CLASSPATH=%INSTALL_PATH%\lib\app.jar

%JDK_HOME%\bin\java -cp "%CLASSPATH%" com.hudsongates.SessionCount.getNumberOfSessions() > %LOG_PATH%\test.log

Problem polega na tym, że gdy wykonuję plik wsadowy, otrzymuję następujący wyjątek:

Exception in thread "main" java.lang.NoClassDefFoundError: com/hudsongates/SessionCount/getNumberOfSessions()

Czy muszę dodać „główną” metodę do mojej klasy? Jeśli tak, co by to zrobiło? Czy istnieje lepszy sposób na osiągnięcie mojego ostatecznego celu, jakim jest dokładne zliczanie liczby aktywnych sesji? Pamiętaj, że liczba sesji musi być zapisana w pliku dziennika w następującym formacie:

activeSessions=24

Z góry dziękuję,

Paweł