Java 从持久性存储加载会话时出现异常
我已经对它做了很多改变。目前,在使用eclipse run as…run on server在tomcat server的新实例中启动应用程序时,我收到以下错误消息:Java 从持久性存储加载会话时出现异常,java,spring,spring-mvc,Java,Spring,Spring Mvc,我已经对它做了很多改变。目前,在使用eclipse run as…run on server在tomcat server的新实例中启动应用程序时,我收到以下错误消息: SEVERE: Exception loading sessions from persistent storage 服务器和应用程序随后能够成功启动,但我希望修复导致错误消息的任何原因。有人能告诉我如何通过这个错误消息吗 堆栈跟踪没有列出应用程序中的任何文件,因此我不知道在应用程序代码中查找何处来修复该问题。您可以查看应用
SEVERE: Exception loading sessions from persistent storage
服务器和应用程序随后能够成功启动,但我希望修复导致错误消息的任何原因。有人能告诉我如何通过这个错误消息吗
堆栈跟踪没有列出应用程序中的任何文件,因此我不知道在应用程序代码中查找何处来修复该问题。您可以查看应用程序的结构,如果这有助于您了解我应该在哪里查找问题的话。以下是堆栈跟踪:
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'
INFO EhCacheManagerFactoryBean-初始化EhCache缓存管理器
INFO ContextLoader-根WebApplicationContext:初始化在4376毫秒内完成
2013年12月16日下午2:51:56 org.apache.catalina.session.StandardManager doLoad
严重:加载持久会话时发生IOException:java.io.EOFEException
java.io.EOFException
在java.io.ObjectInputStream$PeekInputStream.readFully处(ObjectInputStream.java:2280)
位于java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2749)
位于java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:779)
位于java.io.ObjectInputStream。(ObjectInputStream.java:279)
位于org.apache.catalina.util.CustomObjectInputStream。(CustomObjectInputStream.java:58)
位于org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:246)
位于org.apache.catalina.session.StandardManager.load(StandardManager.java:204)
位于org.apache.catalina.session.StandardManager.startInternal(StandardManager.java:491)
位于org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
位于org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5443)
位于org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
位于org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
位于org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
位于java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
位于java.util.concurrent.FutureTask.run(FutureTask.java:138)
位于java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
运行(Thread.java:662)
2013年12月16日下午2:51:56 org.apache.catalina.session.StandardManager startInternal
严重:从持久性存储加载会话时出现异常
java.io.EOFException
在java.io.ObjectInputStream$PeekInputStream.readFully处(ObjectInputStream.java:2280)
位于java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2749)
位于java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:779)
位于java.io.ObjectInputStream。(ObjectInputStream.java:279)
位于org.apache.catalina.util.CustomObjectInputStream。(CustomObjectInputStream.java:58)
位于org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:246)
位于org.apache.catalina.session.StandardManager.load(StandardManager.java:204)
位于org.apache.catalina.session.StandardManager.startInternal(StandardManager.java:491)
位于org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
位于org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5443)
位于org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
位于org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
位于org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
位于java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
位于java.util.concurrent.FutureTask.run(FutureTask.java:138)
位于java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
运行(Thread.java:662)
2013年12月16日下午2:51:56 org.apache.catalina.core.ApplicationContext日志
信息:正在初始化Spring FrameworkServlet“petclinic”
这与Tomcat无法加载先前在关机时保存的序列化web会话有关。这可能是因为Tomcat没有完全关闭,所以会话对象在序列化过程中被损坏
消除此错误的一种方法是禁用跨重启的会话持久性。您可以通过编辑文件CATALINA_HOME/conf/context.xml
并将
的路径名
属性设置为空字符串来完成此操作。这在Tomcat 7的文件中有很好的记录:
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<Manager pathname="" />
您还应该在Tomcat关闭时从CATALINA_HOME/work/CATALINA/localhost/
文件夹中删除任何旧的session.ser
文件
如果需要跨重启的会话持久性,则在您的情况下,这可能是不可接受的。在这种情况下,需要进一步调试该问题。我在eclipse中的一个项目中遇到了类似的错误。我通过以下步骤解决了这个问题:
- 对该项目作出澄清
- 在eclipse的服务器视图中删除Tomcat服务器
- 使用向导在eclipse的服务器视图中定义一个新的Tomcat服务器
- 将项目添加到新定义的Tomcat服务器
这仅仅是因为Persist类没有正确序列化,所以停止Apache。删除项目并清理项目和服务器 在这里重新部署就行了。好的,我
server.servlet.session.persistent=false