OVH Cloud OVH Cloud

HttpSessionListener : compter les utilisateurs d'un site

1 réponse
Avatar
Germain T
Bonjour,

Pour compter le nombre de sessions actives sur le site web, j'utilise
l'interface HttpSessionListener :

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;
}
}

Cela fonctionne bien, cependant dans le cas d'un utilisateur qui a configuré
son navigateur pour refuser les cookies, une session est créée à chaque
requête HTTP. Le compteur dépasse alors rapidement la centaine de session
(nombre de pages lues * nombre d'images).
C'est très embêtant mais je ne vois pas comment résoudre le problème. Peut
être ne pas comptabiliser les sessions, j'ai donc essayé :

public void sessionCreated(HttpSessionEvent se){
se.getSession().setAttribute("sessionok","ok");
if(se.getSession().getAttribute("sessionok")!=null)
activeSessions++;
}

Mais ça ne fonctionne pas comme je l'espérais

Merci de votre aide.

1 réponse

Avatar
David
Le Mon, 17 Apr 2006 20:04:40 +0200, Germain T a écrit :
Cela fonctionne bien, cependant dans le cas d'un utilisateur qui a configuré
son navigateur pour refuser les cookies, une session est créée à chaque
requête HTTP. Le compteur dépasse alors rapidement la centaine de session


Tu fais de l'URL rewriting, l'id de session est alors dans l'URL et ton
container J2EE gère cela comme un cookie.