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 JSP/ Servlet


Sujet :

Servlets/JSP Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 83
    Par défaut session JSP/ Servlet
    Bonjour,

    Je stocke dans ma session des objets.. Lorsque je fais les tests sur localhost tout va bien. Je peux récupérer et utiliser mes objets comme bon me semble... Mais lorsque je déploie mon application sur un serveur web, mes objet sont à null.


    qq aurait une idée svp ?

    Merci pour toute aide ...

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 83
    Par défaut
    Rebonjour

    j'ai trouvé une explication partielle.. la session est en fait invalidée après une première requête.. mais je ne sais toujours pas pourquoi ?

    merci

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 237
    Par défaut
    Je stocke dans ma session des objets..
    Tu pourrais être plus précis ? car c'est peut-être ici le problème.
    Exemple si tu mets dans un bean avec un scope en request.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 83
    Par défaut
    Tout d'abord je te remercie d'avoir pris la peine de me répondre

    Voila

    1. Dans une servlet , je stocke une info avec

    HttpSession session = request.getSession(true);
    session.setAttribute("maString", "le texte de ma string");


    et j'appelle un jsp en faisant
    getServletContext().getRequestDispatcher("/msJsp.jsp").forward(request, response);


    2. Dans cette jsp je récupère bien ma Sring avec

    <%= session.getAttribute("maString") %>

    Cette même jsp, contient un formulaire qui envoie les info à une autre servlet. Mais Dans cette servlet je n'arrive plus à récupérer maString.

    J'utilise
    HttpSession session = request.getSession(true);
    session.getAttribute("maString");

    En débuguant un peu, le résulat me semble logique car j'ai n'ai plus la même session. Chacune des deux servlets est exécutée dans une session différente. (j'ai 2 sessions avec 2 identifiants différents)

    Ma question est donc pourquoi je perds ma session ???? et pourquoi tout va bien lorsque je teste avec localhost

    merci d'avance...








    Citation Envoyé par boutss
    Tu pourrais être plus précis ? car c'est peut-être ici le problème.
    Exemple si tu mets dans un bean avec un scope en request.

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 237
    Par défaut
    Alors à tout hasard,
    tu dois avoir dans chaque page JSP session="true" pour qu'elle utilise la session en cours.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ page session="true" %>
    Je t'en pris

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 83
    Par défaut
    C'est déjà fait. et je pense que true est par défaut.

    Mais je cherche à récupérer mes info dans une deuxième servlet et dans cette 2ème servlet j'utilise bien


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    HttpSession session = request.getSession(true);
    ce qui est équivalant à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ page session="true" %>
    côté jsp

    merci encore






    Citation Envoyé par boutss
    Alors à tout hasard,
    tu dois avoir dans chaque page JSP session="true" pour qu'elle utilise la session en cours.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ page session="true" %>
    Je t'en pris

  7. #7
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 237
    Par défaut
    Ah non ce n'est pas équivalent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HttpSession session = request.getSession(true);
    True veut dire que s'il n'existe pas de Session il en crée une.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ page session="true" %>
    True veut dire utiliser la session en cours

    session="true|false"
    Cet attribut permet de spécifier si un objet de session peut être maintenu ou non pour cette page JSP.
    Sinon en fait tu as 4 niveaux de scope :
    1) Application
    2) Session
    3) Request
    4) Page

    Donc si tu as des problèmes de session entre tes servlets tu peux peut-être utiliser le scope "application" avec javax.servlet.ServletContext
    -------------------------------------
    javax.servlet.http.HttpSession session
    Tout sur la session courante.
    javax.servlet.ServletContext application
    Tout sur l'application.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 83
    Par défaut
    Merci beaucoup pour ces précisions

    Mais mes informations sont vraiment relatives à la session et non à l'application


    Je me pose la question si il y a pas un paramétrage qq au niveau de tomcat car comme je disais ça marche bien lorsque je teste avec localhost





    Citation Envoyé par boutss
    Ah non ce n'est pas équivalent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HttpSession session = request.getSession(true);
    True veut dire que s'il n'existe pas de Session il en crée une.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ page session="true" %>
    True veut dire utiliser la session en cours



    Sinon en fait tu as 4 niveaux de scope :
    1) Application
    2) Session
    3) Request
    4) Page

    Donc si tu as des problèmes de session entre tes servlets tu peux peut-être utiliser le scope "application" avec javax.servlet.ServletContext
    -------------------------------------
    javax.servlet.http.HttpSession session
    Tout sur la session courante.
    javax.servlet.ServletContext application
    Tout sur l'application.

  9. #9
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 237
    Par défaut
    Oui effectivement donc il faut résoudre ce problème.

    Je ne fais que te soulever des interrogations pour que tu puisses y voir plus clair, car à distance c'est toujours plus compliqué.

    Sinon comme tu disais çà fonctionne avec localhost mais plus sur le serveur.
    Alors est-ce que le serveur n'empêche pas tout simplement les sessions ?
    Ou alors le serveur a peut-être l'impression que c'est une nouvelle personne qui l'intérroge ?

  10. #10
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 237
    Par défaut
    Dans le fichier server.xml dans "tomcat/conf" dans la balise "context" de ton application [obligatoire] tu trouveras ces lignes en commentaire.

    Bonne lecture.

    <!-- PersistentManager: Uncomment the section below to test Persistent
    Sessions.

    saveOnRestart: If true, all active sessions will be saved
    to the Store when Catalina is shutdown, regardless of
    other settings. All Sessions found in the Store will be
    loaded on startup. Sessions past their expiration are
    ignored in both cases.
    maxActiveSessions: If 0 or greater, having too many active
    sessions will result in some being swapped out. minIdleSwap
    limits this. -1 or 0 means unlimited sessions are allowed.
    If it is not possible to swap sessions new sessions will
    be rejected.
    This avoids thrashing when the site is highly active.
    minIdleSwap: Sessions must be idle for at least this long
    (in seconds) before they will be swapped out due to
    activity.
    0 means sessions will almost always be swapped out after
    use - this will be noticeably slow for your users.
    maxIdleSwap: Sessions will be swapped out if idle for this
    long (in seconds). If minIdleSwap is higher, then it will
    override this. This isn't exact: it is checked periodically.
    -1 means sessions won't be swapped out for this reason,
    although they may be swapped out for maxActiveSessions.
    If set to >= 0, guarantees that all sessions found in the
    Store will be loaded on startup.
    maxIdleBackup: Sessions will be backed up (saved to the Store,
    but left in active memory) if idle for this long (in seconds),
    and all sessions found in the Store will be loaded on startup.
    If set to -1 sessions will not be backed up, 0 means they
    should be backed up shortly after being used.

    To clear sessions from the Store, set maxActiveSessions, maxIdleSwap,
    and minIdleBackup all to -1, saveOnRestart to false, then restart
    Catalina.
    -->
    <!--
    <Manager className="org.apache.catalina.session.PersistentManager"
    debug="0"
    saveOnRestart="true"
    maxActiveSessions="-1"
    minIdleSwap="-1"
    maxIdleSwap="-1"
    maxIdleBackup="-1">
    <Store className="org.apache.catalina.session.FileStore"/>
    </Manager>
    -->
    Donc si les lignes ne sont plus en commentaire et maxActiveSessions="-1" alors ton problème pourrait venir de là.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 83
    Par défaut
    Bonsoir

    J'ai un fichier de context isolé pour mon application. Et la partie que tu as désignée n'y figure pas.

    En fait je que je constate est que la session est détruite après chaque requête.

    voilà comment on perd une journée, et on oublie de manger ... et on réalise qu'on est au point mort

    merci


    Citation Envoyé par boutss
    Dans le fichier server.xml dans "tomcat/conf" dans la balise "context" de ton application [obligatoire] tu trouveras ces lignes en commentaire.

    Bonne lecture.



    Donc si les lignes ne sont plus en commentaire et maxActiveSessions="-1" alors ton problème pourrait venir de là.

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 83
    Par défaut
    Ce que j'ai oublié de dire est que j'effecttue les tests en local sur windows2000. Le serveur web est sur linux (fedora 5).

    merci

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 4
    Par défaut J ai eu le meme probleme. Voila comment je l ai résolu
    pour que les sessions marchent ajoute emptySessionPath="true" dans le connecteur 8080 du server.xml s'il y n'y est pas ou du moins le connecteur du port.

    En espérant que pour toi ca amrche

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 83
    Par défaut
    merci pour cette réponse.
    cette option n'existe pas sur mon serveur de developpement (winndows2000)
    et je la testerais sur mon serveur de production (F5) à la prochaine livraison.. je laisserais alors une répondre pour dire si ça marche ou non

    merci beaucoup


    Citation Envoyé par cameleon692
    pour que les sessions marchent ajoute emptySessionPath="true" dans le connecteur 8080 du server.xml s'il y n'y est pas ou du moins le connecteur du port.

    En espérant que pour toi ca amrche

Discussions similaires

  1. Session JSP/Servlet, pb IE ?
    Par PsychoZ dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 16/11/2007, 11h58
  2. [jsp/servlet] session, pageContext et données
    Par drKzs dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 29/08/2006, 14h37
  3. Réponses: 3
    Dernier message: 27/04/2006, 11h37
  4. Réponses: 5
    Dernier message: 24/11/2005, 11h32
  5. [JSP / SERVLET] Attribut Session
    Par JWillow dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 22/02/2005, 18h34

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