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 :

[Sessions] Doit-on sérialiser tout ce que l'on place en session?


Sujet :

Servlets/JSP Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Par défaut [Sessions] Doit-on sérialiser tout ce que l'on place en session?
    Bonjour,

    Dans mon appli il m'arrive de place en session (request.getSession().setAttribute()) des objets qui sont des beans que j'ai codé moi même.
    Je me demandais si le fait des les envoyer en session necessite que je déclare ces classes en serializable?
    Car desfois j'ai dans les logs de Tomcat des erreurs de serialisation, mais cela n'empeche pas le bon déroulement de l'appli.

    voici le genre d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    18 avr. 2006 11:51:15 org.apache.catalina.session.StandardSession writeObject
    ATTENTION: Impossible de sérialiser l'attribut de session ListePaiementsArretForm pour la session B58601E8700E455B9CDC7D741B790068
    java.io.NotSerializableException: cciacs.gesam.dao.beans.RemboursementBean
            at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1075)
            at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1245)
            at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1069)
            at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1369)
            at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:380)
            at java.util.Vector.writeObject(Vector.java:1018)
    Une dernière question, si je veux simuler une déconexion d'un utilisateur lorsque clique sur un lien style "logout", il y a t'il un moyen de "flusher" tout ce qui a été placé en session?

    merci d'avance pour votre aide

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par vallica
    Je me demandais si le fait des les envoyer en session necessite que je déclare ces classes en serializable?
    Car desfois j'ai dans les logs de Tomcat des erreurs de serialisation, mais cela n'empeche pas le bon déroulement de l'appli.
    Il est en effet preferable que les objets stocké en session soient Serialisable, car le serveur d'application peut sauvegarder la session (dans un fichier, une BD, etc...) et la désérialiser si neccessaire (par exemple en cas de session inactive depuis un certain temps, ou en cas de redémarrage du serveur pour ne pas perdre les sessions en cours).

    Si un objet n'est pas serialisable il ne pourra pas être récupéré et sera donc perdu...


    Citation Envoyé par vallica
    Une dernière question, si je veux simuler une déconexion d'un utilisateur lorsque clique sur un lien style "logout", il y a t'il un moyen de "flusher" tout ce qui a été placé en session?
    Il suffit d'appeller la méthode invalidate() de la session

    a++

  3. #3
    Membre chevronné
    Avatar de bmoussaud
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 218
    Par défaut
    Tous les élements placés dans l'objet Session d'une servlet doit être Serializable. Ceci permet à un serveur d'application de pouvoir 'passiver' les information de la session si nécessaire. Ce mécanisme est également utilisé dans le cas d'un configuration 'Cluster' où ces informations doivent répliquées entre les différents noeuds.
    Pour le logout:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.getSession().invalidate();

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 746
    Par défaut
    merci beaucoup à tous les 2, et désolé d'avoir répondu un peu tard, mais la notif par mail n'a pas fonctionné, peut-être à cause de la refonte du forum.

    encore merci

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 56
    Par défaut
    Citation Envoyé par bmoussaud
    Ceci permet à un serveur d'application de pouvoir 'passiver' les information de la session si nécessaire.
    Ce mécanisme est utilisé automatiquement par les serveur d'application ou il faut le configurer soit même? Je crois que tomcat peut sauvegarder des sessions pour les réactiver en cas de plantage par exemple. C'est bien ce mécanisme dont tu parles ?

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 27/05/2014, 17h34
  2. [Tomcat 5.5] Sessions persistantes / non sérialisables
    Par Gildas Huart dans le forum Tomcat et TomEE
    Réponses: 7
    Dernier message: 24/05/2007, 23h01
  3. tout ce que je telecharge est buggé
    Par gusgus dans le forum Internet
    Réponses: 24
    Dernier message: 19/09/2006, 19h35
  4. Réponses: 3
    Dernier message: 18/08/2006, 16h15
  5. Petit truc tout simple que je comprend pas
    Par Olaf MENJI dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 29/11/2005, 16h56

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