2011-03-01 114 views
0

在我的盒子上本地运行应用程序时,应用程序完美工作。部署到QA时,会收到以下错误。我在本地和QA上运行Tomcat 5.5.23。该应用程序还使用Spring MVC。Java序列化异常消息

错误2011-03-01 16:41:42:异常加载会话持久storagejava.io.WriteAbortedException:写入中止;在java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect。在java.io.DeveloperMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974) at java.io. ObjectInputStream.readSerialData(ObjectInputStream.java:1849) 在java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753) 在java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329) 在java.io.ObjectInputStream.readObject(ObjectInputStream.java:351) 在org.apache.catalina.session.StandardSession.readObject(StandardSession.java:1402) at org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:931) at org.apache.catalina.session.StandardManager。 doLoad(StandardManager.java:394) at org.apache.catalina.session.StandardManager.load(StandardManager.java:321) at org.apache.catalina.session.StandardManager.start(StandardManager.java:637) at org.apache.catalina.core.ContainerBase.setManager(ContainerBase.java:432) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4160) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760) at org.apache.catalina.core。 ContainerBase.addChild(ContainerBase.java:740) 在org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544) 在org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:626) 在org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:553) 在org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:488) 在org.apache.catalina.startup。 HostConfig.start(HostConfig.java:1138) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022) at org.apache.catalina.core。 StandardHost.start(StandardHost.java:736) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) at org.apache.catalina.core.StandardService.start(StandardService.java:448) at org.apache.catalina.core.StandardServer.start(StandardServer.java:700) at org.apache.catalina.startup。 Catalina.start(Catalina.java:552) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodA ccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在java.lang.reflect.Method.invoke(Method.java:597) 在org.apache。 catalina.startup.Bootstrap.start(引导。java:295) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433) 导致:java.io.NotSerializableException:com.everbank.uft.entities.ldc.VoidReason at java.io .ObjectOutputStream.writeObject0(ObjectOutputStream.java:1156) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326) at java.util.ArrayList.writeObject(ArrayList.java:570) at sun.reflect.NativeMethodAccessorImpl .invoke0(本机方法) 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在java.lang.reflect.Method.invoke( Method.java:597) at java.io.ObjectStreamCl在java.io.ObjectOutputStream上的java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1392) 上的java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1461) 。 writeObject0(ObjectOutputStream.java:1150) 在java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326) 在org.apache.catalina.session.StandardSession.writeObject(StandardSession.java:1478) 在org.apache。 catalina.session.StandardSession.writeObjectData(StandardSession.java:948) at org.apache.catalina.session.StandardManager.doUnload(StandardManager.java:517) at org.apache.catalina.session.StandardManager.unload(StandardManager。 java:463) at org.apache.ca在org.apache.catalina.core.ContainerBase.removeChild(ContainerBase。)上的org.apache.catalina.core.StandardContext.stop(StandardContext.java:4363) (标准管理器.stop(StandardManager.java:667) )。的java:893) 在org.apache.catalina.startup.HostConfig.undeployApps(HostConfig.java:1180) 在org.apache.catalina.startup.HostConfig.stop(HostConfig.java:1151) 在org.apache。 catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:313) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120) at org.apache.catalina.core.ContainerBase.stop(ContainerBase。 java:1055) at org.apache.catalina.core.ContainerBase.stop(ContainerBase.java:1067) at org.apache.catalina.core。在org.apache.catalina.core.StandardServer.stop(StandardServer.java:734)处的标准发动机。 在org.apache.catalina.startup.Catalina.stop(Catalina.java:602) 在org.apache.catalina.startup.Catalina.start(Catalina.java:577) ... 6更 ERROR 2011- 03-01 16:42:49:UserTrackingFilter.doFilter()失败。消息:Servlet执行抛出exceptionjavax.servlet.ServletException:Servlet执行抛出异常 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292) at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:188) 在com.everbank.uft.filters.UserTrackingFilter.doFilter(UserTrackingFilter.java:65) 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) 在有机.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at com.everbank.uft.filters.HibernateSessionRequestFilter.doFilter(HibernateSessionRequestFilter.java:36) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (应用A nFilterChain.java:215) 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) 在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210) 在有机apache.catalina.core.StandardContextValve.invoke(StandardContextValve。的java:174) 在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 在org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) 在org.apache。 catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151) at org.apache.coyote.http11.Http11Processor.process(Http11Processor。 Java的:870) 在org.apache.coyote.http11.Http11BaseProtocol $ Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) 在org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) 在org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) 在org.apache.tomcat.util.threads.ThreadPool $ ControlRunnable.run(ThreadPool.java:685) 在java.lang.Thread.run(Thread.java:619)

+0

需要更多信息..你是如何部署到 “QA”?环境如何不同?从堆栈跟踪来看,错误来自Hibernate,因此在应用程序中可能存在通过网络访问实体的错误? Hibernate要求实体是Serializable以通过网络边界发送内容。建议'com.everbank.uft.entities.ldc.VoidReason'需要可序列化。 – 2011-03-01 22:04:41

+0

@dionysus如何解决这个问题。我也被部署到tomcat 6 – Balasubramanian 2017-08-31 11:39:01

回答

5

这意味着您已将对象放入不可序列化的会话中,并且您已在服务器停止上启用会话持久性。

你有多种选择:

  • 使问题类实现Serializable
  • 从会话中删除它的HttpSessionListener
  • sessionDestroyed(..)如果是存储在会话中的另一个类的成员,使其transient
  • 简单地忽略错误

您还应该清除tomcat的“work”目录,以便不会恢复以前的序列化会话。

+0

谢谢!使VoidReason类可序列化帮助。 – dionysus 2011-03-02 18:08:01

+0

@dionysus - 随时在这种情况下标记答案:) – Bozho 2011-03-02 18:11:26

2

com.everbank。 uft.entities.ldc.VoidReason不是可序列化的,它不实现Serializable或继承它。

+0

感谢您的帮助! – dionysus 2011-03-02 18:08:32

0

您的QA服务器上是否存在串行化的Tomcat会话,这些会话是否已损坏或以其他方式进行了升级?

尝试删除:$ {}的catalina.home /工作/卡塔利娜/本地主机/ “无论你的应用程序的名称是” /SESSION.ser

+0

你能告诉我SESSION.ser文件包含什么内容吗? – dionysus 2011-03-02 18:09:09

+0

它包含会话状态,如果您启用了Restart Persistence。 http://tomcat.apache.org/tomcat-5.5-doc/config/manager.html(在标准管理器实现下) – revdrjrr 2011-03-02 18:41:39