Contar sessões ativas no aplicativo J2EE implementado no JBoss 3.2.1
Eu gerencio um aplicativo J2EE que é implementado no JBoss 3.2.1. Como parte do meu serviço ao meu cliente, desejo fornecer relatórios que mostrem o número de sessões ativas. Implementei uma classe simples e uma página JSP que recuperam o número de sessões ativas, mas descobri uma falha: o processo de verificação do número de sessões em si cria uma nova sessão e, portanto, aumenta o número de sessões.
Aqui está o código da minha aula:
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;
}
}
A página JSP se parece com isso:
<html>
<head>
<title>Active Sessions</title>
</head>
<body>
activeSessions=<%=com.hudsongates.SessionCount.getNumberOfSessions()%>
</body>
</html>
Eu gostaria de alterar a abordagem um pouco para que, em vez de usar uma página JSP, eu use um arquivo em lotes simples. Por exemplo, criei um arquivo de lote chamado 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
O problema é que, quando executo o arquivo em lote, recebo a seguinte exceção:
Exception in thread "main" java.lang.NoClassDefFoundError: com/hudsongates/SessionCount/getNumberOfSessions()
Preciso adicionar um método "main" à minha classe? Se sim, o que isso faria? Existe uma maneira melhor de atingir meu objetivo final de contar com precisão o número de sessões ativas? Tenha em mente que a contagem de sessões precisa ser gravada em um arquivo de log no seguinte formato:
activeSessions=24
Desde já, obrigado,
Paulo