Ausnahme beim Laden von Sitzungen aus dem persistenten Speicher

Lesezeit: 5 Minuten

Ich habe viele Änderungen an vorgenommen die frühling petclinic anwendung. Im Moment erhalte ich die folgende Fehlermeldung, wenn ich die Anwendung in einer neuen Instanz des Tomcat-Servers mit Eclipse run as…run on server starte:

SEVERE: Exception loading sessions from persistent storage  

Der Server und die Anwendung können anschließend erfolgreich gestartet werden, aber ich möchte beheben, was die Fehlermeldung verursacht. Kann mir jemand zeigen, wie ich diese Fehlermeldung umgehen kann?

Der Stack-Trace listet keine Datei aus der Anwendung auf, daher weiß ich nicht, wo ich im Anwendungscode suchen soll, um das Problem zu beheben. Du kannst reinschauen den Petclinic-Code auf github um die Struktur der Anwendung zu sehen, wenn Ihnen das hilft zu sehen, wo ich suchen sollte, um das Problem zu finden. Hier der Stacktrace:

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'  

  • Ich würde vermuten, dass dies ein Missverhältnis zwischen dem ist, was ehcache bereitgestellt wird, und dem, was es erwartet. Schau mal rein ehcache.org/documentation/integrations/hibernate. Sie können versuchen, dies auszuschalten, indem Sie die ändern <property name="hibernate.cache.use_second_level_cache">true</property> <property name="hibernate.cache.use_query_cache">true</property>

    – Gruseliger Wombat

    17. Dezember 2013 um 1:57 Uhr

  • Bei Verwendung der Spring-Konfiguration wäre der zu ändernde Teil <prop key="hibernate.cache.use_second_level_cache">true</prop> <prop key="hibernate.cache.use_query_cache">true</prop>

    – Gruseliger Wombat

    17. Dezember 2013 um 1:58 Uhr

Benutzeravatar von Will Keeling
Will Kieling

Dies hat damit zu tun, dass Tomcat keine zuvor serialisierten Websitzungen laden kann, die bei einem früheren Herunterfahren gespeichert wurden. Dies kann daran liegen, dass Tomcat nicht sauber heruntergefahren wurde und daher Sitzungsobjekte während der Serialisierung beschädigt wurden.

Eine Möglichkeit, diesen Fehler zu beheben, besteht darin, die Sitzungspersistenz bei Neustarts zu deaktivieren. Sie können dies tun, indem Sie die Datei bearbeiten CATALINA_HOME/conf/context.xml und Einstellen der pathname Attribut der <Manager> zu einer leeren Zeichenfolge. Dies ist in der Datei für Tomcat 7 gut dokumentiert:

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

<Manager pathname="" />

Sie sollten auch alle alten löschen session.ser Dateien aus der CATALINA_HOME/work/Catalina/localhost/<appName> Ordner, während Tomcat heruntergefahren wird.

Dies ist in Ihrem Fall möglicherweise nicht akzeptabel, wenn Sitzungspersistenz über Neustarts hinweg erforderlich ist. In diesem Fall wäre eine weitere Fehlerbehebung des Problems erforderlich.

  • Ich habe gerade die Datei SESSION.ser gelöscht und es hat bei mir funktioniert.

    – Bhushan

    9. Dezember 2016 um 6:50 Uhr

  • @Will einwandfreie Antwort!

    – Gaurav

    5. Juni 2019 um 13:37 Uhr

Benutzeravatar von M.Nethaji
M.Nethaji

Tomcat-Arbeitsordner löschen. Starten Sie den Tomcat-Server neu, hoffentlich läuft er jetzt ohne Ausnahme oder Fehler!

Wählen Sie dazu den Server in Tomcat aus und wählen Sie „Tomcat-Arbeitsverzeichnis bereinigen“.

Geben Sie hier die Bildbeschreibung ein

Wenn Sie mit Spring Boot arbeiten, fügen Sie es einfach zu application.properties hinzu:

server.servlet.session.persistent=false

Bereinigen Sie einfach das Tomcat-Arbeitsverzeichnis … was für mich gut funktioniert hat.

Es liegt einfach daran, dass die Persist-Klasse nicht ordnungsgemäß serialisiert wurde. Stoppen Sie einfach Apache. Entfernen Sie auch Project und Clean Project und Server.

und einfach erneut bereitstellen Hier ist es fertig. viel Glück.

ugos Benutzer-Avatar
Ugo

Ich hatte einen ähnlichen Fehler bei einem Projekt in Eclipse. Ich habe es mit diesen Schritten gelöst:

  • Machen Sie ein sauberes Projekt
  • Löschen Sie den Tomcat-Server in der Serveransicht von Eclipse
  • Definieren Sie mithilfe des Assistenten einen neuen Tomcat-Server in der Serveransicht von Eclipse
  • Fügen Sie das Projekt dem neu definierten Tomcat-Server hinzu

Danach funktionierte der Betrieb dieses neuen Tomcat-Servers einwandfrei.

Benutzeravatar von user2664008
Benutzer2664008

-Die Klasse sollte die serialisierbare Schnittstelle mit serialVersionUID implementieren. – Führen Sie den sauberen Build durch und starten Sie den Server neu

1444320cookie-checkAusnahme beim Laden von Sitzungen aus dem persistenten Speicher

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy