2013-12-16 25 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接口。 - 做干净的生成并重新启动服务器