当前位置: 首页 > 面试题库 >

从持久性存储中异常加载会话

云京
2023-03-14
问题内容

我对春季petclinic应用程序进行了许多更改。目前,当我使用eclipse as as
…在服务器上运行时,在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无法加载先前关闭时保存的先前序列化的Web会话有关。这可能是因为Tomcat无法完全关闭,因此会话对象在序列化过程中被损坏了。

使该错误消失的一种方法是禁用重新启动之间的会话持久性。您可以通过编辑文件CATALINA_HOME/conf/context.xml并将的pathname属性设置为<Manager>空字符串来执行此操作。Tomcat
7的文件中对此进行了详细记录:

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

<Manager pathname="" />

在Tomcat关闭时,您还应该session.ser从该CATALINA_HOME/work/Catalina/localhost/<appName>文件夹中删除所有旧文件。

如果需要跨重启的会话持久性,这在您的情况下可能是不可接受的。在这种情况下,有必要对该问题进行进一步的调试。



 类似资料:
  • 调用init方法失败;嵌套的异常是javax。坚持不懈PersistenceException:[PersistenceUnit:默认值]无法生成Hibernate SessionFactory 在更换系统中的操作系统后,我遇到了这个异常。在我的应用程序运行MySQL 5.7和java 8之前。现在我把它改成了mySQL 8和java 8。代码没有任何变化。原因一定是什么?? 下面是日志:

  • 当我开始我的申请时,它给了我下面提到的异常。我正在使用加密存储类,但不知道为什么会有这个异常,即使我现在没有访问任何存储类。请引导。 [EDT]0:0:0,32-Exception:java.io.eofException-null java.io.eofException at java.io.datainputstream.readfilly(datainputstream.java:197)

  • 问题内容: 关闭redis服务器后,使用set存储的值被破坏,在这里我找到了使用持久性存储的方法,有人帮助我,如何使用javascript实现它? 我想将来自客户端的一些值存储在redis db中,并且必须在其他客户端中使用该值。 问题答案: 您需要配置Redis服务器以支持持久性机制。此配置存储在文件中,该文件在redis-server命令行上作为参数给出。 这是Redis 2.4的默认文件:h

  • 本平台是通过storageclass来动态创建PV。也就是说咱们依赖于storageclass,如果您的Kubernetes不支持相应的存储试,将无法非常方便的进行挂载。 目前暂不支持挂载多个PVC,或许以后会更新吧。 这里演示的是用的NFS进行演示,实际使用时可根据自己的需求配置相应的provisioner,其他配置是一样的不需要调整,只需要在“模版管理” 调整StorageClass和Pers

  • 我试图在Eclipse中测试我的hibernate maven应用程序,当我运行获取enttity类名称的方法时,我得到了以下异常: 这是persistence.xml: 这是使用以下方法的类: 波姆。xml: 我尝试更改持久性的版本号、更改xmlns、提供程序的名称,但仍然是例外。