Cuente las sesiones activas en la aplicación J2EE desplegada en JBoss 3.2.1
Administro una aplicación J2EE que se implementa en JBoss 3.2.1. Como parte de mi servicio a mi cliente, quiero proporcionar informes que muestren la cantidad de sesiones activas. He implementado una clase simple y una página JSP que recuperan el número de sesiones activas, pero he descubierto un defecto: el proceso de verificar el número de sesiones crea una nueva sesión y, por lo tanto, aumenta el número de sesiones.
Aquí está el código para mi clase:
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;
}
}
La página JSP se ve así:
<html>
<head>
<title>Active Sessions</title>
</head>
<body>
activeSessions=<%=com.hudsongates.SessionCount.getNumberOfSessions()%>
</body>
</html>
Me gustaría cambiar el enfoque ligeramente para que, en lugar de usar una página JSP, use un archivo por lotes simple. Por ejemplo, creé un archivo por lotes llamado 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
El problema es que cuando ejecuto el archivo por lotes obtengo la siguiente excepción:
Exception in thread "main" java.lang.NoClassDefFoundError: com/hudsongates/SessionCount/getNumberOfSessions()
¿Necesito agregar un método "principal" a mi clase? Si es así, ¿qué haría? ¿Hay una mejor manera de lograr mi objetivo final de contar con precisión el número de sesiones activas? Tenga en cuenta que el recuento de sesiones debe escribirse en un archivo de registro en el siguiente formato:
activeSessions=24
Gracias por adelantado,
Pablo