从持久存储装载exception加载会话
我已经对春季petclinic应用做了很多改变。 目前,当我在使用eclipse运行的tomcat服务器的新实例中启动应用程序时,出现以下错误消息…在服务器上运行:
SEVERE: Exception loading sessions from persistent storage
然后服务器和应用程序随后能够成功启动,但我想解决任何导致错误信息。 任何人都可以告诉我如何通过这个错误信息?
堆栈跟踪没有列出应用程序中的任何文件,所以我不知道该在哪里查看应用程序代码来解决问题。 你可以看看github上的petclinic代码来查看应用程序的结构,如果这有助于你看到我应该看到的问题。 这是堆栈跟踪:
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'
这是为了使Tomcat不能加载先前已经保存在先前closures的序列化Web会话。 这可能是因为Tomcat没有完全closures,因此会话对象在序列化过程中被破坏。
使这个错误消失的一种方法是在重新启动时禁用会话持久性。 您可以通过编辑文件CATALINA_HOME/conf/context.xml
并将<Manager>
的pathname
属性设置为空string来完成此操作。 这在Tomcat 7的文件中有很好的logging:
<!-- Uncomment this to disable session persistence across Tomcat restarts --> <Manager pathname="" />
当Tomcatclosures时,您还应该从CATALINA_HOME/work/Catalina/localhost/<appName>
文件夹中删除任何旧的session.ser
文件。
如果需要跨重新启动的会话持久性,这可能是不可接受的。 在这种情况下,需要进一步debugging该问题。
删除tomcat“work”文件夹。 重新启动tomcat服务器,希望现在可以运行,没有任何exception或错误!
这可以通过在Tomcat中select服务器并select“清理Tomcat工作目录”
只是清理Tomcat的工作目录..这对我很好。
这仅仅是因为持续的类没有正确的序列化就停止了Apache。 删除项目并清理项目和服务器。
并在此重新部署完成。 祝你好运。
我在eclipse中有一个类似的错误。 我用这些步骤解决了它:
- 清理项目
- 在eclipse的服务器视图中删除Tomcat服务器
- 使用向导在eclipse的服务器视图中定义一个新的Tomcat服务器
- 将项目添加到新定义的Tomcat服务器
之后,运行这个新的Tomcat服务器都是完美的。
– 类应该使用serialVersionUID实现Serializable接口。 做干净的生成并重新启动服务器
- Spring MVCtypes转换:PropertyEditor或Converter?
- Spring 3.0 MVC绑定枚举区分大小写
- 尝试使用Spring Data JPA创build自定义存储库时找不到types错误的属性
- Spring Java Config:如何用运行时参数创build一个原型范围的@Bean?
- 春季日程安排:@Scheduled与Quartz
- Spring的GA,RC和M2版本有什么区别?
- 解释为什么构造函数注入比其他选项更好
- 当find多个匹配的bean时,Spring如何通过名称自动装载?
- 春季启动:是否有可能使用外部application.properties文件在任何目录与胖胖的jar?