J'ai regardé la classe HttpSessionListener. D'après ce que j'ai compris, elle ne permet pas de créer ou de détruire des session, mais juste d'être averti lorsqu'une session est créée ou lorsqu'elle est détruite.
Ce que je "recommandais" était de créer une variable de type java.util.Map (pour l'exemple, nous dirons que cette variable s'appelle mapSessions) sur la servlet de connexion qui, en plus de vérifier que le login/password est correct, stocke dans mapSessions la session de l'utilisateur avec son login comme clé.
Ça donnerait quelque chose comme ça :
public void connectUser(String login, String password) {
if (verifPassword(login, password)) { // s'il s'agit du mot de passe de l'utilisateur.
request.getSession().setAttribute("login", login); // on stocke l'utilisateur connecté en session.
mapSessions.put(login, request.getSession()); // on stocke la session utilisateur.
}
}
public Collection<String> getPersonnesConnectees() {
return mapSessions.keySet(); // liste des clés (i.e logins) de la Map.
}
public void disconnectUser(String login) {
mapSessions.get(login).invalidate();
}
Par contre, il faut bien voir qu'il s'agit là d'une déconnexion brutale de l'utilisateur et que si celui-ci n'est pas averti, son application plantera certainement.