2011-03-01 96 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