2013-12-16 29 views
36

我對the spring petclinic application做了很多更改。目前,我收到以下錯誤消息,當我使用eclipse運行在Tomcat服務器的新實例啓動應用程序...在服務器上運行:異常從持久存儲加載會話

SEVERE: Exception loading sessions from persistent storage 

服務器和應用程序隨後能夠啓動成功,但我想解決任何導致錯誤消息。任何人都可以告訴我如何克服這個錯誤信息?

堆棧跟蹤沒有列出應用程序中的任何文件,所以我不知道該在哪裏查看應用程序代碼來解決問題。您可以查看the petclinic code at github以查看應用程序的結構,如果這有助於您查看應該在哪裏查找問題。以下是堆棧跟蹤:

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

我想這是提供給ehcache什麼和它期望什麼之間的不匹配。看看http://ehcache.org/documentation/integrations/hibernate。您可以嘗試通過更改' true true' –

+0

如果使用Spring配置部件更改會是' true true' –

回答

76

這是與Tomcat無法加載之前在先前關機時保存的串行化Web會話有關的問題。這可能是因爲Tomcat沒有完全關閉,因此會話對象在序列化過程中被破壞。

使此錯誤消失的一種方法是禁用跨重新啓動的會話持久性。您可以通過編輯文件CATALINA_HOME/conf/context.xml並將<Manager>pathname屬性設置爲空字符串來完成此操作。這在文件中有據可查爲Tomcat 7:

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

<Manager pathname="" /> 

你也應該從CATALINA_HOME/work/Catalina/localhost/<appName>文件夾中刪除任何舊session.ser文件,而Tomcat是關機。

如果需要跨重新啓動的會話持久性,這可能是不可接受的。在這種情況下,需要進一步調試該問題。

+1

我剛剛刪除了SESSION.ser文件,它對我很有幫助。 –

1

我在eclipse中有一個類似的錯誤項目。

  • 做一個乾淨的項目
  • 在日食
  • 的服務器視圖中刪除Tomcat服務器使用嚮導
  • 定義在Eclipse中的服務器視圖新的Tomcat服務器:我與這些步驟解決了它
  • 項目添加到新定義Tomcat服務器

之後,運行這個新的Tomcat服務器的所有完美。

28

刪除tomcat「work」文件夾。重新啓動tomcat服務器,希望現在它可以運行,沒有任何異常或錯誤!

這可以通過選擇在Tomcat服務器,然後選擇「清潔Tomcat的工作目錄」

enter image description here

3

這只不過是僅僅因爲堅持類是不正確序列化只是停止Apache來完成。刪除項目並清理項目和服務器。

只需重新部署在此完成。祝你好運。

4

只是清理Tomcat的工作目錄..這對我來說很好。

1

- 該類應該使用serialVersionUID實現Serializable接口。 - 做乾淨的生成並重新啓動服務器