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 :

les objets en session toujours Serializable


Sujet :

Servlets/JSP Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 6
    Par défaut les objets en session toujours Serializable
    Bonjour,

    je développe une application que un serveur Tomcat 6.
    J'ai des exceptions au redémarrage de tomcat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    GRAVE: "IOException" lors du chargement de sessions persistantes: java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: LeNomDeMaClasse
    J'ai effectivement plusieurs de ces objets en session. Je me pose alors plusieurs questions :
    Faut-il que les objets mis en session soit Serializable ?
    Après un arrêt et demarrage de tomcat, les sessions sont-elles encore actives ?
    Pourquoi je n'ai ce message d'erreur qu'avec cet objet. J'ai un autre objet en session qui est une classe contenant les valeurs des champs de mon formulaire ?

    J'espère que quelqu'un pourra m'eclairer même si n'empêche pas le bon fonctionnement de l'appli...

  2. #2
    Membre éprouvé Avatar de Satch
    Homme Profil pro
    Hypnothérapeute - Magicien
    Inscrit en
    Mars 2004
    Messages
    498
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Suisse

    Informations professionnelles :
    Activité : Hypnothérapeute - Magicien

    Informations forums :
    Inscription : Mars 2004
    Messages : 498
    Par défaut
    Citation Envoyé par guillaumeg69 Voir le message
    Faut-il que les objets mis en session soit Serializable ?
    Puisque la session doit être persistée, oui.

    Citation Envoyé par guillaumeg69 Voir le message
    Après un arrêt et demarrage de tomcat, les sessions sont-elles encore actives ?
    Comme ce sont des sessions persistantes, oui.

    Citation Envoyé par guillaumeg69 Voir le message
    Pourquoi je n'ai ce message d'erreur qu'avec cet objet. J'ai un autre objet en session qui est une classe contenant les valeurs des champs de mon formulaire ?
    Cet autre objet est-il directement ou indirectement Serializable ?

    Serait-il possible aussi que l'erreur se produise au moment où tomcat essaye de persister la session et que ne pouvant persister ton premier objet, il n'essaye même pas de persister le second, d'où l'absence d'erreur ?

  3. #3
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Faut-il que les objets mis en session soit Serializable ?
    Oui si tu veux respecter les Specs J2EE, Oui si tu veux la persistance de la session, Oui si un jour ton conteneur webapp sera ammené à fonctionner en cluster avec du loadbalancing. De plus, il me semble que certains conteneurs webapp serialisent systématiquement les objets de la session (passage par le jndi) ce qui ferait casser ton application sur ces conteneurs.


    Après un arrêt et demarrage de tomcat, les sessions sont-elles encore actives ?
    Oui, ce qui permet de faire une mise à jour d'une webapp sans déconnecter les utilisateurs

    Pourquoi je n'ai ce message d'erreur qu'avec cet objet. J'ai un autre objet en session qui est une classe contenant les valeurs des champs de mon formulaire ?
    Parce qu'à la première exception, c'est foutu pour la session, pas besoin d'aller plus loin. T'as pas envie que tomcat lance 50 stacktrace si t'as 50 objet dans la session, tout ça pour te dire que la session n'est pas serializable, ça on le sais dès le premier objet

    J'espère que quelqu'un pourra m'eclairer même si n'empêche pas le bon fonctionnement de l'appli...
    Pour le moment (cf point 1)

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 6
    Par défaut
    Merci pour vos réponses.

    Je viens de faire des tests.
    En mettant ma classe serializable, je n'ai plus de problème. En revanche, il ne me retrouve pas mon autre objet, ce qui parait normal puisqu'il n'est pas Serializable (oui c'est sûr, même par héritage). Mais il ne me met pas de message d'erreur !

    Voila la gueule de la session.
    J'ai plein d'objet de type Structure (celui pour lequel j'avais l'erreur de Serialization).
    Un seul objet Situation, qui lui n'est pas serializable, pas retrouvé en cas de rechargement de contexte, mais sans erreur au chargement !

    Je cherche la petite bête, mais ça m'énerve de ne pas comprendre...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	sites 	[fr.grenoble.iufm.metier.Structure@15d45d9, fr.grenoble.iufm.metier.Structure@94aa42]
    	mesbeans 	[situation, etatCivilExt]
    	modele 	[universites, sites, masters]
    	situation 	fr.grenoble.iufm.bean.Situation@1d978ea
    	masters 	[fr.grenoble.iufm.metier.Structure@35dc95, fr.grenoble.iufm.metier.Structure@24ea85, fr.grenoble.iufm.metier.Structure@1a0d346, fr.grenoble.iufm.metier.Structure@18eabf6, fr.grenoble.iufm.metier.Structure@1bbd583, fr.grenoble.iufm.metier.Structure@bebb88, fr.grenoble.iufm.metier.Structure@a0a36, fr.grenoble.iufm.metier.Structure@124614c, fr.grenoble.iufm.metier.Structure@16fdcc1, fr.grenoble.iufm.metier.Structure@106433d, fr.grenoble.iufm.metier.Structure@287811, fr.grenoble.iufm.metier.Structure@e2b07b, fr.grenoble.iufm.metier.Structure@b05fcb, fr.grenoble.iufm.metier.Structure@16136f0, fr.grenoble.iufm.metier.Structure@15e00b7, fr.grenoble.iufm.metier.Structure@81018b, fr.grenoble.iufm.metier.Structure@18c6cbc, fr.grenoble.iufm.metier.Structure@36ae83, fr.grenoble.iufm.metier.Structure@1fb24d3, fr.grenoble.iufm.metier.Structure@12ea1dd, fr.grenoble.iufm.metier.Structure@84f566, fr.grenoble.iufm.metier.Structure@10b23cf, fr.grenoble.iufm.metier.Structure@5c2a25, fr.grenoble.iufm.metier.Structure@d2efa1, fr.grenoble.iufm.metier.Structure@725967, fr.grenoble.iufm.metier.Structure@14ba9a2, fr.grenoble.iufm.metier.Structure@6dddcf, fr.grenoble.iufm.metier.Structure@fd4662]
    	universites 	[fr.grenoble.iufm.metier.Structure@17e615, fr.grenoble.iufm.metier.Structure@10275fa, fr.grenoble.iufm.metier.Structure@8fa0d1, fr.grenoble.iufm.metier.Structure@18706f6, fr.grenoble.iufm.metier.Structure@1da2737]

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    t'es sur de l'avoir stocké dans la session et pas dans l'application? Peux tu nous montrer le code qui stocke cet objet et le code qui montre qu'il n'y est plus?

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 6
    Par défaut
    C'est pas très évident de donner du code explicite... mais je vais essayer.

    Je mets le formulaire en session avec le code suivant où currentView vaut "situation" et formBean est mon objet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    request.getSession().setAttribute(currentView, formBean);
    ensuite dans ma jsp, j'utilise les EL avec par exemple:
    Lorsque je mets mon objet Serializable, je le retrouve bien après avoir arrêté et relancé tomcat, les données s'affichent.
    S'il n'est pas Serializable, alors l'objet n'existe plus, mais je n'ai pas de message d'erreur.

    Je repensais que ces messages d'erreur sont apparus au moment où j'ai mis en place des requêtes ajax avec JQuery par la fonction load("monurl"). Il n'y a pas de lien ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/06/2013, 10h29
  2. Réponses: 2
    Dernier message: 31/10/2007, 14h26
  3. Réponses: 16
    Dernier message: 06/06/2007, 12h42
  4. Rafraichissement de la fiche ainsi que de tous les objets
    Par portu dans le forum Composants VCL
    Réponses: 7
    Dernier message: 06/01/2004, 00h25
  5. Effacer les variables de session
    Par glsn dans le forum ASP
    Réponses: 2
    Dernier message: 12/12/2003, 13h42

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