IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

[Session]Session timeout


Sujet :

Servlets/JSP Java

  1. #1
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut [Session]Session timeout
    Bonjour,

    Je voudrais personnaliser la page d'erreur dans le cas d'expiration de la session; Un objet User est toujours stocké en session, je voudrais faire la difference quand l'utilisateur essaye d'acceder à une ressource sans se connecter User = null, et quand le user essaye d'acceder à une ressource après l'expiration de la session..

    PS: Je souhaiterais eviter d'utiliser un XXListener sur la session

    J'ai tester les méthodes suivantes sans resultats..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    session.isNew()
    request.isRequestedSessionIdValid()
    Merci


    [Modéré par Didier] : ajout de tag dans le titre - Les règles du forum Java

  2. #2
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 19
    Par défaut Re: Session timeout
    Citation Envoyé par Sniper37
    PS: Je souhaiterais eviter d'utiliser un XXListener sur la session
    C'est pourtant le plus adapté.

  3. #3
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut Re: Session timeout
    Citation Envoyé par Pitivier
    Citation Envoyé par Sniper37
    PS: Je souhaiterais eviter d'utiliser un XXListener sur la session
    C'est pourtant le plus adapté.
    C'est le dernier recours, mais il doit bien avoir un moyen pour savoir si on essaye d'utiliser une session qui a dejà exister ou une toute neuve..

  4. #4
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 19
    Par défaut Re: Session timeout
    Citation Envoyé par Sniper37
    Citation Envoyé par Pitivier
    Citation Envoyé par Sniper37
    PS: Je souhaiterais eviter d'utiliser un XXListener sur la session
    C'est pourtant le plus adapté.
    C'est le dernier recours, mais il doit bien avoir un moyen pour savoir si on essaye d'utiliser une session qui a dejà exister ou une toute neuve..
    Honnetement, je ne vois pas comment faire. Une fois que le timeout a expiré et que la session est détruite, toute nouvelle requete http provoque la création d'une nouvelle session. A ce moment là tu as perdu l'information qu'il existait une session précédente.

    Moi pour faire ce que tu veux faire, j'utiliserais une valve qui fasse aussi Session Listener. J'ai mis un exemple basique d'une telle valve ici :
    http://www.developpez.net/forums/viewtopic.php?t=429215

    Si tu déclares la valve au niveau de la webapp, il y aura une instance unique qui analysera toutes les requetes http. Il est alors facile de mettre en cache dans un hashmap toutes les sessions crées. Tout doit se faire dans la méthode invoke. Cette méthode est appellée systématiquement avant d'acceder à toute ressource d'une webapp. C'est dans cette méthode que tu pourra détecter qu'il y a eu changement de session et rediriger vers une page d'erreur.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 106
    Par défaut
    quand tu fais un request.getSession, tu récupère la session en cours. Donc si une session a ete en timeout, l'appel a cette méthode te renvoie une nouvelle session.

    On ne peut donc pas demander a une session si elle est en timeout puisqu'elle n'existe plus.

    En revanche, en comparant des id de sessions, tu peux savoir sur laquelle tu travailles.

    Ceci dit, il y'a des interfaces de gestion de servlet qui sont faites pour ca. C'est propre et efficace

  6. #6
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Bonjour,

    J'ai trouvé la solution, j'avais bien commencé au début:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    boolean sessionValide = request.isRequestedSessionIdValid() ;
     
    if(!sesssionValide){
     
    // l'id de la session ne correspond pas à la requete en cours: session a expiré
     
    }
    Fallait juste le fairez avant de créer une nouvelle session :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    HttpSession session = request.getSession(false);
    voilà..

    Merci à tous. à++

  7. #7
    Membre Expert
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Par défaut
    Hello,

    Bien joué!

    N'oublie pas le tag résolu!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. session idle => timeout
    Par noumian dans le forum Langage
    Réponses: 2
    Dernier message: 21/12/2007, 09h21
  2. Réponses: 1
    Dernier message: 27/03/2007, 09h50
  3. [Sessions] Session quand tu nous tiens
    Par arti2004 dans le forum Langage
    Réponses: 10
    Dernier message: 27/05/2006, 19h19
  4. [SOAP / PHP] Sessions et Timeout
    Par Geomaster dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 09/12/2005, 09h54
  5. [Sessions] Session + Serialize + Objets?
    Par Chiwawa dans le forum Langage
    Réponses: 2
    Dernier message: 28/09/2005, 20h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo