我对spring petclinic应用做了很多改动.目前,当我在使用eclipse运行的tomcat服务器的新实例中启动应用程序时,我收到以下错误消息:在服务器上运行:
SEVERE: Exception loading sessions from persistent storage
Run Code Online (Sandbox Code Playgroud)
随后服务器和应用程序能够成功启动,但我想修复导致错误消息的任何内容.任何人都可以告诉我如何通过此错误消息?
堆栈跟踪不会列出应用程序中的任何文件,因此我不知道在应用程序代码中查找哪个位置来解决问题.您可以在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) …Run Code Online (Sandbox Code Playgroud) 在Tomcat中,有一个众所周知的配置选项可conf/context.xml用于禁用会话持久性:
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<Manager pathname="" />
Run Code Online (Sandbox Code Playgroud)
当如此处所示取消注释时,org.apache.catalina.Manager(例如org.apache.catalina.session.StandardManager)的应用实现没有pathname告诉它将会话存储到磁盘的位置,因此它不会将会话文件写入磁盘(例如,在关闭时),这是我们想要的.
换句话说,这会禁用标准Tomcat功能以通过服务器重新启动来维持会话.
如何在嵌入式Tomcat的Spring Boot中实现同样的目标?
也许可以以某种方式获取Manager对象以将属性路径名设置为null?