2013-12-16 21 views
36

Ho apportato numerose modifiche a the spring petclinic application. Al momento, sto ottenendo il seguente messaggio di errore quando lancio l'applicazione in una nuova istanza di server Tomcat utilizzando run Eclipse come ... eseguito sul server:eccezioni durante il caricamento delle sessioni dalla memoria permanente

SEVERE: Exception loading sessions from persistent storage 

Il server e l'applicazione successivamente sono in grado di avvio con successo, ma mi piacerebbe risolvere qualsiasi cosa sta causando il messaggio di errore. Qualcuno può mostrarmi come superare questo messaggio di errore?

La traccia di stack non elenca alcun file dall'applicazione, quindi non so dove cercare il codice dell'applicazione per risolvere il problema. Puoi guardare in the petclinic code at github per vedere la struttura dell'applicazione, se questo ti aiuta a vedere dove dovrei cercare per trovare il problema. Ecco l'analisi dello stack:

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' 
+0

Direi che si tratta di una corrispondenza errata tra ciò che viene fornito a ehcache e ciò che si aspetta. Dai un'occhiata a http://ehcache.org/documentation/integrations/hibernate. Potresti provare a disattivarlo modificando ' true true' –

+0

Se si utilizza la configurazione di Spring, la parte da modificare sarebbe ' true true' –

risposta

76

Questo è a che fare con Tomcat non essere in grado di caricare sessioni web precedentemente serializzati che erano stati salvati su un arresto in precedenza. Ciò potrebbe essere dovuto al fatto che Tomcat non si arrestava correttamente e quindi gli oggetti di sessione si danneggiavano durante la serializzazione.

Un modo per disattivare questo errore consiste nel disabilitare la persistenza della sessione durante i riavvii. È possibile farlo modificando il file CATALINA_HOME/conf/context.xml e impostando l'attributo pathname dello <Manager> in una stringa vuota. Questo è ben documentato nel file per Tomcat 7:

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

<Manager pathname="" /> 

Si dovrebbe anche eliminare tutti i vecchi session.ser file dalla cartella CATALINA_HOME/work/Catalina/localhost/<appName> mentre Tomcat è l'arresto.

Potrebbe non essere accettabile nel caso in cui sia necessaria la persistenza della sessione durante i riavvii. In tal caso sarebbe necessario un ulteriore debugging del problema.

+1

Ho appena cancellato il file SESSION.ser e ha funzionato per me. –

1

Ho avuto un errore simile con un progetto in eclissi. Ho risolto con questi passaggi:

  • fare una pulita al progetto
  • eliminare il server Tomcat la vista del server di eclisse
  • Definire un nuovo server Tomcat la vista del server di Eclipse utilizzando la procedura guidata
  • aggiungere il progetto al server Tomcat appena definito

Dopo di che, l'esecuzione di questo nuovo server Tomcat tutto ha funzionato perfettamente.

28

Elimina cartella "lavoro" di Tomcat. Riavvia il server tomcat, si spera che ora venga eseguito senza eccezioni o errori!

Questo può essere fatto selezionando il server all'interno di Tomcat e selezionando "Clean Tomcat directory di lavoro"

enter image description here

3

è semplicemente solo perché Persistere classe non è stata serializzare correttamente Just Stop Apache. Rimuovi progetto e pulisci progetto e server.

e Just Redeploy Here è fatto. in bocca al lupo.

4

Basta pulire la directory di lavoro di Tomcat ... che mi ha funzionato bene.

1

-La classe deve implementare l'interfaccia serializzabile con serialVersionUID. - Effettuare la compilazione pulita e riavviare il server

Problemi correlati