Programación en castellano
Inicio > Foros > Java (Servlets y JSP) > Contador usuarios conectados II
-Foros de debate

Java (Servlets y JSP)
Lista de foros | Lista de mensajes de este foro

Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.

Contador usuarios conectados II
Enviado por getparameter el día 7 de diciembre de 2003

Intento llevar una cuenta de los usuarios que estan conectados a un site al mismo timpo, buscando he encontrado este codigo ...
import javax.servlet.http.HttpSessionListener;
import javax.servlet.http.HttpSessionEvent;

public class SessionCounter implements HttpSessionListener {

private static int activeSessions = 0;

/* Session Creation Event */
public void sessionCreated(HttpSessionEvent se) {
activeSessions++;
}

/* Session Invalidation Event */
public void sessionDestroyed(HttpSessionEvent se) {
if(activeSessions > 0)
activeSessions--;
}

public static int getActiveSessions() {
return activeSessions;
}
}

pero no me funciona :( .... lo que he hecho es compilar el .java (OK), meter la clase en el WEB-INF/classes/ de la aplicacion e intentar cargarla en el index para probar .... ERROR

Otra seria meterlo en el web.xml para que este disponible para todos los jsp ... pero como ???

Se aceptan sugerencias .... o soluciones alternativas ....

Eu

 
Re: Contador usuarios conectados II
Enviado por Ken el día 7 de diciembre de 2003

A ver, lo que tienes es un Listener (la clase hereda de HttpSessionListener) así que tienes que indicar en el web.xml que la aplicación "coloque" esa clase "a la escucha" de las sesiones.

Para el caso de ContextListener (que es lo que yo manejo más) se hace dentro de <web-app> con un elemento llamado <listener>. Te pongo el ejemplo:

<listener>
<listener-class>MiClaseEscucha</listener-class>
</listener>

En el caso de las sesiones no estoy del todo seguro cómo hacerlo. Busca un apartado "session" dentro del web.xml (he de reconocer que no lo conozco muy bien... cada día descubro algo nuevo de ese archivo).

A ver si con esto te orientas un poco... y cuando encuentres dónde colocarlo y cómo acceder al número de sesiones y demás lo pones por aquí, vale?

Salu2

Ken

 
Re: Re: Contador usuarios conectados II
Enviado por getparameter el día 8 de diciembre de 2003

Al fin lo he conseguido .... la solucion la encontre en http://stardeveloper.com/articles/display.html?art... ... copio codigo resumido para el que pueda interesarle ...

Lo primero es crear la clase SessionCounter.class a partir de este SessionCounter.java ...

package com.stardeveloper.web.listener;

import javax.servlet.http.HttpSessionListener;
import javax.servlet.http.HttpSessionEvent;

public class SessionCounter implements HttpSessionListener {
private static int activeSessions = 0;
public void sessionCreated(HttpSessionEvent se) {

activeSessions++;
}
public void sessionDestroyed(HttpSessionEvent se) {
if(activeSessions > 0){

activeSessions--;
}
}
public static int getActiveSessions() {
return activeSessions;
}
}
... la clase la metemos en el WEB-INF/classes/com/stardeveloper/web/listener/SessionCounter.class

Para que tire debemos tocar el web.xml del WEB-INF/ de nuestra aplicacion incorporando este bloque ...

<listener>
<listener-class>
com.stardeveloper.web.listener.SessionCounter
</listener-class>
</listener>

pero cuidando donde lo metemos pues el orden de los tags de este fichero es importante, en el original no se aclara este tema, copio mi web.xml a modo de ejemplo ....

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/j2ee/dtds/web-app_2.3.dtd">

<web-app>
<display-name>Nombre de tu aplicacion</display-name>

<!-- Listeners -->
<listener>
<listener-class>com.stardeveloper.web.listener.SessionCounter</listener-class>
</listener>


<!-- lo que ya tengais en el web.xml -->

</web-app>

Revisad la version de la DTD, yo tenia la web-app_2.2.dtd y arrojaba error, la cambie por esta sin mas y sanseacabo .... restart Tomcat y ya ....

El codigo del jsp encargadod e mostrar la info es algo asi ...

<%@page language="java" import="com.stardeveloper.web.listener.SessionCounter" contentType="text/html; charset=ISO-8859-1" %>
<html>
<head>
</head>
<body>

Usuarios conectado:<%= SessionCounter.getActiveSessions() %>

</body>
</html>

Debeis abrir nuevas ventanas del navegador para chequear que funciona (nada de Ctrl + u) ... la suma la hace instantaneamente, lo de la resta (cuando se destruye una session), por lo menos a mi me va mas lenta y hay que esperar un instante para que la realice, meted una salida de sistema dentro de la clase para chequear que esta entrando por cada uno de los metodos (session Created() y session Destroyed() segun el caso) ... algo asi como System.out.println("Entro en .... "); vereis que funciona ....

Cualquier duda escribidme, prometo responder ..... :)

Y gracias Ken x el interes ....

Eu

 
Re: Re: Re: Contador usuarios conectados II
Enviado por aira el día 18 de junio de 2006

Me ha parecido tremendamente útil la información que has subido, pero tengo un problema....
Tarbajo con jsp y claro, solo con abrir la página principal de mi aplicación, aunque no te loguees, la sesion te la crea al mostrarte la página... y digamos que eso no es precisamente lo que estaba buscando, pues necesito los usuarios conectados REALMENTE, o al menos que esten logueados o lo hayan estado (teniendo en cuenta el tiempo que tarda en eliminarse la sesion)
Puede parecer un "capricho" pero realmente es un problema, pues: cuando en la aplicación se hace un logout, yo me encargo de eliminar la sesion (y con los System.out.println.... veo que realmente la elimina) pero la página de logout me redirige a la principal, que es jsp.... y vuelta a empezar.... de nuevo la sesion creada.
No se si podras ayudarme pero de todas formas, gracias...
;)

 




Tienda
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: musica mp3 | logos y melodias | hospedaje web linux | registro de dominios | servidores dedicados
más internet: comprar | recursos gratis | posicionamiento en buscadores | tienda virtual | gifs animados