web-dev-qa-db-fra.com

les sessions de chargement d'exception du stockage persistant

J'ai apporté de nombreux changements à l'application petclinique de printemps . À l'heure actuelle, le message d'erreur suivant s'affiche lorsque je lance l'application dans une nouvelle instance du serveur Tomcat à l'aide d'Eclipse exécuté en tant que ... exécuté sur le serveur:

SEVERE: Exception loading sessions from persistent storage  

Par la suite, le serveur et l’application peuvent être lancés avec succès, mais j’aimerais réparer la cause du message d’erreur. Quelqu'un peut-il me montrer comment surmonter ce message d'erreur?

La trace de pile ne répertorie aucun fichier de l'application. Je ne sais donc pas où chercher dans le code de l'application pour résoudre le problème. Vous pouvez regarder dans code petclinic sur github pour voir la structure de l'application, si cela vous aide à voir où je devrais chercher pour trouver le problème. Voici la trace de la pile:

INFO  EhCacheManagerFactoryBean - Initializing EhCache CacheManager
INFO  ContextLoader - Root WebApplicationContext: initialization completed in 4376 ms
Dec 16, 2013 2:51:56 PM org.Apache.catalina.session.StandardManager doLoad
SEVERE: IOException while loading persisted sessions: Java.io.EOFException  
Java.io.EOFException
    at Java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.Java:2280)
    at Java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.Java:2749)
    at Java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.Java:779)
    at Java.io.ObjectInputStream.<init>(ObjectInputStream.Java:279)
    at org.Apache.catalina.util.CustomObjectInputStream.<init>(CustomObjectInputStream.Java:58)
    at org.Apache.catalina.session.StandardManager.doLoad(StandardManager.Java:246)
    at org.Apache.catalina.session.StandardManager.load(StandardManager.Java:204)
    at org.Apache.catalina.session.StandardManager.startInternal(StandardManager.Java:491)
    at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:150)
    at org.Apache.catalina.core.StandardContext.startInternal(StandardContext.Java:5443)
    at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:150)
    at org.Apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.Java:1559)
    at org.Apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.Java:1549)
    at Java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.Java:303)
    at Java.util.concurrent.FutureTask.run(FutureTask.Java:138)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.Java:886)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:908)
    at Java.lang.Thread.run(Thread.Java:662)
Dec 16, 2013 2:51:56 PM org.Apache.catalina.session.StandardManager startInternal
SEVERE: Exception loading sessions from persistent storage  
Java.io.EOFException
    at Java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.Java:2280)
    at Java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.Java:2749)
    at Java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.Java:779)
    at Java.io.ObjectInputStream.<init>(ObjectInputStream.Java:279)
    at org.Apache.catalina.util.CustomObjectInputStream.<init>(CustomObjectInputStream.Java:58)
    at org.Apache.catalina.session.StandardManager.doLoad(StandardManager.Java:246)
    at org.Apache.catalina.session.StandardManager.load(StandardManager.Java:204)
    at org.Apache.catalina.session.StandardManager.startInternal(StandardManager.Java:491)
    at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:150)
    at org.Apache.catalina.core.StandardContext.startInternal(StandardContext.Java:5443)
    at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:150)
    at org.Apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.Java:1559)
    at org.Apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.Java:1549)
    at Java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.Java:303)
    at Java.util.concurrent.FutureTask.run(FutureTask.Java:138)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.Java:886)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:908)
    at Java.lang.Thread.run(Thread.Java:662)
Dec 16, 2013 2:51:56 PM org.Apache.catalina.core.ApplicationContext log
INFO: Initializing Spring FrameworkServlet 'petclinic'  
42
CodeMed

Ceci est dû au fait que Tomcat n'est pas en mesure de charger des sessions Web précédemment sérialisées qui avaient été enregistrées lors d'un arrêt antérieur. Cela est peut-être dû au fait que Tomcat n'a pas été arrêté correctement et que les objets de session ont été corrompus lors de la sérialisation.

Une façon de supprimer cette erreur serait de désactiver la persistance de session lors des redémarrages. Vous pouvez le faire en modifiant le fichier CATALINA_HOME/conf/context.xml et la définition de l'attribut pathname de la <Manager> à une chaîne vide. Ceci est bien documenté dans le fichier Tomcat 7:

<!-- Uncomment this to disable session persistence across Tomcat restarts -->

<Manager pathname="" />

Vous devez également supprimer tous les anciens session.ser fichiers de la CATALINA_HOME/work/Catalina/localhost/<appName> dossier pendant que Tomcat est arrêté.

Cela peut ne pas être acceptable dans votre cas si la persistance de la session lors des redémarrages est nécessaire. Dans ce cas, un débogage supplémentaire du problème serait nécessaire.

93
Will Keeling

Supprimez le dossier "work" de Tomcat. Redémarrez le serveur Tomcat, j'espère qu'il fonctionnera maintenant sans exception ni erreur!

Cela peut être fait en sélectionnant le serveur dans Tomcat et en sélectionnant "Nettoyer le répertoire de travail Tomcat".

enter image description here

32
M.Nethaji

Il suffit de nettoyer le répertoire de travail Tomcat, ce qui m’a bien fonctionné.

5

C’est simplement parce que la classe de persistance n’a pas été sérialisée correctement. Arrêtez Apache. Supprimez également Projet et Nettoyer projet et serveur.

et Just Redeploy Ici, c'est fait. bonne chance.

3
Krishna

J'ai eu une erreur similaire avec un projet dans Eclipse. Je l'ai résolu avec ces étapes:

  • Nettoyer le projet
  • Supprimer le serveur Tomcat dans la vue serveur d'Eclipse
  • Définissez un nouveau serveur Tomcat dans la vue serveur d'Eclipse à l'aide de l'assistant.
  • Ajouter le projet au serveur Tomcat récemment défini

Après cela, l’exécution de ce nouveau serveur Tomcat a parfaitement fonctionné.

1
agugar

-La classe doit implémenter l'interface Serializable avec serialVersionUID. - Faites la nouvelle construction et redémarrez le serveur

1
user2664008