Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3188 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [Java, JSP, Servlet] Problème de session

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Java, JSP, Servlet] Problème de session

n°1618216
paolo1616
Posté le 03-10-2007 à 09:46:57  profilanswer
 

Bonjour tout le monde,  
Voilà j'ai un "léger" problème de session je m'explique:
Je dois corriger certains "bug" d'une IHM d'aministration de serveur, et mon problème de session vient lorsque une autre personne et moi même sommes connectés sur l'IHM (sur 2 pc différents), si cette autre personne se déconnecte, je suis déconnecté également.  
Dans ma méthode doPost, il y a  :
 

Code :
  1. HttpSession session = request.getSession(true);


 
Je vous remercie d'avance.


Message édité par paolo1616 le 03-10-2007 à 10:33:25
mood
Publicité
Posté le 03-10-2007 à 09:46:57  profilanswer
 

n°1618228
Bidem
Posté le 03-10-2007 à 10:05:32  profilanswer
 

Montre nous le code de la déconnexion (là où tu fais le session.invalidate())
 
Sinon, ça ressemble à un problème classique. Quand plusieurs utilisateurs se retrouvent à mélanger les infos/actions il faut regarder s'il n'y a pas des variables d'instances dans tes servlets (qui rappellons le sont des singletons).

n°1618243
paolo1616
Posté le 03-10-2007 à 10:31:26  profilanswer
 

Voici le code lorsque je vais cliquer sur l'onglet déconnexion de ma page :  

Code :
  1. if ("DECONNEXION".equals(action) || (!isConnect) ) {
  2.             twbean.processDeconnexion(); // va permettre de se déconnecter de la base
  3.             CoordinateurPageBeanMessage beanMsg = new CoordinateurPageBeanMessage("Votre session a expiré !" );
  4.             request.setAttribute("beanMsg", beanMsg);
  5.             // Redirection vers page de formulaire de visualisation
  6.             RequestDispatcher r = getServletContext().getRequestDispatcher("/jsp/" + nomPage + ".jsp" );
  7.             try {
  8.                 r.forward(request, response);
  9.                 request.removeAttribute("ACTION" );
  10.                 request.getSession(false).setMaxInactiveInterval(1);
  11.                 request.getSession(false).invalidate();
  12.                 request.setAttribute("login",null);
  13.                 request.setAttribute("password",null);
  14.                 request.setAttribute("host",null);
  15.                 request.setAttribute("dbName",null);
  16.                 request.setAttribute("port",null);
  17.                 request.setAttribute("ACTION",null);
  18.                 twbean = null;
  19.                 isConnect = false;
  20.                 request = null;
  21.             }
  22.             catch (IOException ioe) {
  23.                 isConnect = false;
  24.                 request.getSession().setAttribute("beanErreur", new CoordinateurPageBeanMessage(ioe.getMessage()));
  25.                 nomPage = "erreur";
  26.             }
  27.             catch (ServletException se) {
  28.                 isConnect = false;
  29.                 request.getSession().setAttribute("beanErreur", new CoordinateurPageBeanMessage(se.getMessage()));
  30.                 nomPage = "erreur";
  31.             }
  32.         }

n°1618376
Bidem
Posté le 03-10-2007 à 13:40:37  profilanswer
 

Es-tu sûr que twbean et isConnect ne sont pas partagés entre les utilisateur ? Où ces 2 variables sont-elles définies ?

n°1618390
paolo1616
Posté le 03-10-2007 à 14:07:26  profilanswer
 

Pour la variable twbean, et isConnect elles sont  initialisées au moment de la connexion, par le code suivant :  

Code :
  1. if ("CONNECT".equals(action)) {
  2.             twbean = new TableViewBean();
  3.             //initialisation d'une nouvelle session
  4.             HttpSession session = request.getSession(true);
  5.             session.setMaxInactiveInterval(Constants.MAX_TIMEOUT);
  6.             String url = twbean.processRequest(request);
  7.             if (url == null) {
  8.                 CoordinateurPageBeanMessage beanMsg = new CoordinateurPageBeanMessage("Parametres incorrects" );
  9.                 request.setAttribute("beanMsg", beanMsg);
  10.                 // Redirection vers page de formulaire de visualisation
  11.                 url = "/jsp/SessionTimeout.jsp";
  12.             }
  13.             session.setAttribute("twbean", twbean);
  14.             session.setAttribute("login", request.getParameter("login" ));
  15.             // Redirection vers page de formulaire de visualisation
  16.             RequestDispatcher r = getServletContext().getRequestDispatcher(url);
  17.             try {
  18.                 isConnect = true;
  19.                 r.forward(request, response);
  20.             }
  21.             catch (IOException ioe) {
  22.                 isConnect = false;
  23.                 session.setAttribute("beanErreur", new CoordinateurPageBeanMessage(ioe.getMessage()));
  24.                 nomPage = "erreur";
  25.             }
  26.             catch (ServletException se) {
  27.                 isConnect = false;
  28.                 session.setAttribute("beanErreur", new CoordinateurPageBeanMessage(se.getMessage()));
  29.                 nomPage = "erreur";
  30.             }
  31.         }


 

n°1618518
quazar
Posté le 03-10-2007 à 16:21:58  profilanswer
 


Et c'est des variables locales ? ou est-ce qu'elles sont déclarées?

n°1618560
paolo1616
Posté le 03-10-2007 à 17:01:38  profilanswer
 

Ces variables sont déclarées dans ma servlet, comme données privées. Et elles sont initialisées dans le code ci dessus (où l'action est "CONNECT" )

n°1618579
Bidem
Posté le 03-10-2007 à 17:22:16  profilanswer
 

paolo1616 a écrit :

Ces variables sont déclarées dans ma servlet, comme données privées. Et elles sont initialisées dans le code ci dessus (où l'action est "CONNECT" )


 
BINGO !!
 
Ta servlet est un Singleton (il n'en existe qu'une seule instance) donc si tu lui mets des attributs ils sont partagés par tout le monde.
 

n°1618584
paolo1616
Posté le 03-10-2007 à 17:27:59  profilanswer
 

OK,
Une dernière question, comment puis je faire pour que ces attributs (données) ne soient pas partagés par tout le monde ?

n°1618637
quazar
Posté le 03-10-2007 à 21:35:25  profilanswer
 

session.setAttribute ...
session.getAttribute ...

 

1 session par connecté et variables locales au lieu d'attributs de la servlet.


Message édité par quazar le 03-10-2007 à 21:36:06
mood
Publicité
Posté le 03-10-2007 à 21:35:25  profilanswer
 

n°1620609
paolo1616
Posté le 08-10-2007 à 15:51:13  profilanswer
 

Merci beaucoup, ca à l'air de marcher, mais j'ai juste un petit problème maintenant, lorsque je cliques sur le bouton Déconnexion, j'ai une page blache, je n'ai pas ma page JSP "SessionTimeout" qui s'affiche comme avant...
EDIT : Si je mets la ligne request.getSession(false).invalidate, en commentaire cela marche, mais sinon ma page ne s'affiche pas.


Message édité par paolo1616 le 08-10-2007 à 17:18:50

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [Java, JSP, Servlet] Problème de session

 

Sujets relatifs
Fermer applet Java depuis du Javascript ?probleme avec LocalConnection
Problème COMPILATION Code::Blockprobleme de endl
PHP - ecommerce : session ou pas ?probleme site web
Problème sur l'affichage d'imagesProblème RMI Windows/Linux
Menu javascript : probleme avec IE7PHP vs JSP
Plus de sujets relatifs à : [Java, JSP, Servlet] Problème de session


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR