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

Développement Web en Java Discussion :

Impossible de sérialiser l'attribut de session


Sujet :

Développement Web en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Par défaut Impossible de sérialiser l'attribut de session
    Bonjour

    J'ai mon bean Offre qui implémente la Class Serializable, mais lorsque je lance l'application, tout marche bien mais j'ai le message d'erreur suivant:

    PM org.apache.catalina.session.StandardSession writeObject
    Avertissement: Impossible de sérialiser l'attribut de session offres pour la session F3AC8D204279D9D3A301427DB40E9875
    java.io.NotSerializableException: beans.Offre
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1183)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347)
    at java.util.HashMap.writeObject(HashMap.java:1133)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:988)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1495)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1431)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1177)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347)
    at org.apache.catalina.session.StandardSession.writeObject(StandardSession.java:1671)
    at org.apache.catalina.session.StandardSession.writeObjectData(StandardSession.java:1077)
    at org.apache.catalina.session.StandardManager.doUnload(StandardManager.java:432)
    at org.apache.catalina.session.StandardManager.unload(StandardManager.java:353)
    at org.apache.catalina.session.StandardManager.stopInternal(StandardManager.java:518)
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
    at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5474)
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
    at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3913)
    at org.apache.catalina.manager.ManagerServlet.reload(ManagerServlet.java:954)
    at org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:364)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
    Voici mon bean:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package beans;
     
    import java.io.Serializable;
     
    /**
     *
     * @author Mo
     */
    public class Offre implements Serializable{
        private Long id;
        private String nom_employ;
        private String nom_offre;
        private String date_limite;
        private String secteur;
        private String poste;
        private String niveau;
     
        /**
         * @return the id
         */
        public Long getId() {
            return id;
        }
     
        /**
         * @param id the id to set
         */
        public void setId(Long id) {
            this.id = id;
        }
     
     
     
        /**
         * @return the date_limite
         */
        public String getDate_limite() {
            return date_limite;
        }
     
        /**
         * @param date_limite the date_limite to set
         */
        public void setDate_limite(String date_limite) {
            this.date_limite = date_limite;
        }
     
        /**
         * @return the secteur
         */
        public String getSecteur() {
            return secteur;
        }
     
        /**
         * @param secteur the secteur to set
         */
        public void setSecteur(String secteur) {
            this.secteur = secteur;
        }
     
        /**
         * @return the poste
         */
        public String getPoste() {
            return poste;
        }
     
        /**
         * @param poste the poste to set
         */
        public void setPoste(String poste) {
            this.poste = poste;
        }
     
        /**
         * @return the niveau
         */
        public String getNiveau() {
            return niveau;
        }
     
        /**
         * @param niveau the niveau to set
         */
        public void setNiveau(String niveau) {
            this.niveau = niveau;
        }
     
        /**
         * @return the nom_offre
         */
        public String getNom_offre() {
            return nom_offre;
        }
     
        /**
         * @param nom_offre the nom_offre to set
         */
        public void setNom_offre(String nom_offre) {
            this.nom_offre = nom_offre;
        }
     
        /**
         * @return the nom_employ
         */
        public String getNom_employ() {
            return nom_employ;
        }
     
        /**
         * @param nom_employ the nom_employ to set
         */
        public void setNom_employ(String nom_employ) {
            this.nom_employ = nom_employ;
        }
     
    }
    D'où peut venir l'erreur?

    Merci

  2. #2
    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 : 45
    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
    C'est curieux. C'est l'entièreté de ton bean? Ce message laisse entendre qu'il y a un champ dans ton bean qui ne sont pas sérialisables.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 173
    Par défaut
    Le message parle de "offres" (avec un 's'). Aurais-tu une liste d'objet de type "Offre" qui s'appelerait comme ca?

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Ce n'est pas ce bean qui pose problème, le message fait référence à "offres"
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Par défaut
    Bizarre...Je me suis réveillé ce matin et lorsque j'ai démarré l'application, le message d'erreur avait disparu. Pourtant hier j'avais redémarré le serveur plusieurs fois. J'ai même redémarré la machine 2 ou 3 fois. Je n'y comprends vraiment plus rien.

    Sinon le "offres" qui apparait dans le message d'erreur provient de l'objet que j'ai mis en session. Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package filters;
     
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
     
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;
     
     
    import beans.Offre;
    import dao.DAOFactory;
    import dao.OffreDao;
     
    public class PrechargementFilter implements Filter {
        public static final String CONF_DAO_FACTORY      = "daofactory";
     
        public static final String ATT_SESSION_OFF   = "offres";
        public static final String ATT_SESSION_CPT_OFF   = "cpt_offres";
     
        private OffreDao          offreDao;
     
        public void init( FilterConfig config ) throws ServletException {
            /* Récupération d'une instance de nos DAO Client et Commande */
            this.offreDao = ( (DAOFactory) config.getServletContext().getAttribute( CONF_DAO_FACTORY ) ).getOffreDao();
        }
     
        public void doFilter( ServletRequest req, ServletResponse res, FilterChain chain ) throws IOException,
                ServletException {
            /* Cast de l'objet request */
            HttpServletRequest request = (HttpServletRequest) req;
     
            /* Récupération de la session depuis la requête */
            HttpSession session = request.getSession();
     
     
     
            if ( session.getAttribute( ATT_SESSION_CPT_OFF ) == null ) {
     
            int aa =offreDao.compter();
            System.out.println("le second enreg:" +aa);
            session.setAttribute( ATT_SESSION_CPT_OFF, aa );
            }
     
            if ( session.getAttribute( ATT_SESSION_OFF ) == null ) {
     
                List<Offre> listeOffres = offreDao.lister();
                Map<Long, Offre> mapOffres = new HashMap<Long, Offre>();
                for ( Offre offre : listeOffres ) {
                    mapOffres.put( offre.getId(), offre );
                }
                session.setAttribute( ATT_SESSION_OFF, mapOffres );
            }
     
            chain.doFilter( request, res );
        }
     
        public void destroy() {
        }
    }
    Donc je ne sais pas si je dois mettre la discussion comme résolue, au risque de voir l'erreur réapparaitre.

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Tous les objets que tu mets en session sont Serializable, à mon avis, le problème était lié à un cache quelconque sur ton serveur, spatiotemporel en quelque sorte
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Par défaut
    spatiotemporel...

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/02/2015, 18h34
  2. Impossible de récupérer un attribut de la session
    Par Rhimo dans le forum Développement Web en Java
    Réponses: 11
    Dernier message: 27/07/2011, 13h37
  3. Impossible de sérialiser l'attribut de session
    Par dehbi dans le forum Struts 1
    Réponses: 8
    Dernier message: 15/04/2006, 16h17
  4. [Tomcat] afficher la liste des attributs en session
    Par michaelbob dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 11/04/2006, 01h07
  5. Impossible de changer les attributs d'un dossier
    Par NeHuS dans le forum Autres Logiciels
    Réponses: 20
    Dernier message: 03/03/2006, 09h38

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