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'
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.
Il suffit de nettoyer le répertoire de travail Tomcat, ce qui m’a bien fonctionné.
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.
J'ai eu une erreur similaire avec un projet dans Eclipse. Je l'ai résolu avec ces étapes:
Après cela, l’exécution de ce nouveau serveur Tomcat a parfaitement fonctionné.
-La classe doit implémenter l'interface Serializable avec serialVersionUID. - Faites la nouvelle construction et redémarrez le serveur