嚴重: IOException while loading persisted sessions: java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: org.springframewor


嚴重: IOException while loading persisted sessions: java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: org.springframework.security.web.firewall.RequestWrapper

java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: org.springframework.security.web.firewall.RequestWrapper

        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1332)

        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946)

        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870)

        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)

        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)

        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946)

        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870)

        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)

        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)

        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946)

        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870)

        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)

        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)

        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)

        at org.apache.catalina.session.StandardSession.readObject(StandardSession.java:1588)

        at org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:1061)

        at org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:284)

        at org.apache.catalina.session.StandardManager.load(StandardManager.java:204)

        at org.apache.catalina.session.StandardManager.startInternal(StandardManager.java:470)

        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)

        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5219)

        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)

        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1033)

        at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:774)

        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)

        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1033)

        at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:291)

        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)

        at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)

        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)

        at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:727)

        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)

        at org.apache.catalina.startup.Catalina.start(Catalina.java:620)

        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

        at java.lang.reflect.Method.invoke(Method.java:597)

        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:303)

        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:431)

Caused by: java.io.NotSerializableException: org.springframework.security.web.firewall.RequestWrapper

        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1164)

        at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)

        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)

        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)

        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)

        at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)

        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)

        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)

        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)

        at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)

        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)

        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)

        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)

        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330)

        at org.apache.catalina.session.StandardSession.writeObject(StandardSession.java:1664)

        at org.apache.catalina.session.StandardSession.writeObjectData(StandardSession.java:1078)

        at org.apache.catalina.session.StandardManager.doUnload(StandardManager.java:411)

        at org.apache.catalina.session.StandardManager.unload(StandardManager.java:353)

        at org.apache.catalina.session.StandardManager.stopInternal(StandardManager.java:497)

        at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:225)

        at org.apache.catalina.core.StandardContext$4.run(StandardContext.java:5442)

        at java.lang.Thread.run(Thread.java:662)

        at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5459)

        at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:225)

        at org.apache.catalina.core.ContainerBase.stopInternal(ContainerBase.java:1072)

        at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:225)

        at org.apache.catalina.core.ContainerBase.stopInternal(ContainerBase.java:1072)

        at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:225)

        at org.apache.catalina.core.StandardService.stopInternal(StandardService.java:502)

        at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:225)

        at org.apache.catalina.core.StandardServer.stopInternal(StandardServer.java:748)

        at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:225)

        at org.apache.catalina.startup.Catalina.stop(Catalina.java:693)

        at org.apache.catalina.startup.Catalina.start(Catalina.java:654)

        ... 6 more

2013-9-26 13:34:51 org.apache.catalina.session.StandardManager startInternal

嚴重: Exception loading sessions from persistent storage

java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: org.springframework.security.web.firewall.RequestWrapper

        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1332)

        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946)

        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870)

        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)

        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)

        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946)

        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870)

        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)

        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)

        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946)

        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870)

        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)

        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)

        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)

        at org.apache.catalina.session.StandardSession.readObject(StandardSession.java:1588)

        at org.apache.catalina.session.StandardSession.readObjectData(StandardSession.java:1061)

        at org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:284)

        at org.apache.catalina.session.StandardManager.load(StandardManager.java:204)

        at org.apache.catalina.session.StandardManager.startInternal(StandardManager.java:470)

        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)

        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5219)

        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)

        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1033)

        at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:774)

        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)

        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1033)

        at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:291)

        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)

        at org.apache.catalina.core.StandardService.startInternal(StandardService.java:443)

        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)

        at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:727)

        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)

        at org.apache.catalina.startup.Catalina.start(Catalina.java:620)

        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

        at java.lang.reflect.Method.invoke(Method.java:597)

        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:303)

        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:431)

Caused by: java.io.NotSerializableException: org.springframework.security.web.firewall.RequestWrapper

        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1164)

        at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)

        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)

        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)

        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)

        at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)

        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)

        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)

        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)

        at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)

        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)

        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)

        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)

        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330)

        at org.apache.catalina.session.StandardSession.writeObject(StandardSession.java:1664)

        at org.apache.catalina.session.StandardSession.writeObjectData(StandardSession.java:1078)

        at org.apache.catalina.session.StandardManager.doUnload(StandardManager.java:411)

        at org.apache.catalina.session.StandardManager.unload(StandardManager.java:353)

        at org.apache.catalina.session.StandardManager.stopInternal(StandardManager.java:497)

        at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:225)

        at org.apache.catalina.core.StandardContext$4.run(StandardContext.java:5442)

        at java.lang.Thread.run(Thread.java:662)

        at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5459)

        at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:225)

        at org.apache.catalina.core.ContainerBase.stopInternal(ContainerBase.java:1072)

        at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:225)

        at org.apache.catalina.core.ContainerBase.stopInternal(ContainerBase.java:1072)

        at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:225)

        at org.apache.catalina.core.StandardService.stopInternal(StandardService.java:502)

        at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:225)

        at org.apache.catalina.core.StandardServer.stopInternal(StandardServer.java:748)

        at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:225)

        at org.apache.catalina.startup.Catalina.stop(Catalina.java:693)

        at org.apache.catalina.startup.Catalina.start(Catalina.java:654)

        ... 6 more

 

原理分析:(類未繼承序列化接口)

Tomcat在內部實現的時候,會有一個機制,那就是當Tomcat服務器停止 后,tomcat會將內存中的信息寫到硬盤上,當我們重啟服務器的時候,他會將硬盤上序列化文件重新讀入內存中,以此來保證session的共享,在集群系統中經常要使用。而在此,我們實際就是將session中存儲的一個個對象序列化到硬盤,但是對象中如果有對象屬性,我們也將這個對象序列化到硬盤,tomcat序列化一般在work目錄下。但是不是所有的對象都可以被序列化的,他必須實現Serializable接口,也就是序列化,然后 java虛擬機在加載這個類的時候,對字節碼會進行特殊處理,生成的二進制代碼可以通過 ObjectOutputStream.writeObject(obj)方法寫到硬盤上。而雖然我們FormBean實現了序列化接口,而對象屬性對應 得類沒有實現序列化接口,不能被序列化,最后導致以上異常。

 

解決辦法一:

配置tomcat在關閉的時候就不去保存session資源。

在server.xml中Context下添加如下的內容:

<Manager className="org.apache.catalina.session.PersistentManager" saveOnRestart="false"/>

再進行啟動停止等操作,報如下的類似錯誤:

org.apache.catalina.session.PersistentManagerBase start 嚴重: No Store configured, persistence disabled

原因是添加的東東少添加了一點點兒。 解決辦法:

修改剛才添加的 <Context>中<Manager> 元素: 將<Manager className="org.apache.catalina.session.PersistentManager" saveOnRestart="false"/>改為:

<Manager className="org.apache.catalina.session.PersistentManager" saveOnRestart="false">

  <Store className="org.apache.catalina.session.FileStore"/>

</Manager>

即可解決該問題。

解決辦法二:

將那些需要放在session的類進行序列化。 也就是讓類實現接口java.io.Serializable即可

 

另附:http://blog.csdn.net/qxs965266509/article/details/8808456

 

我們再來看所報的異常:java.io.WriteAbortedException: writing aborted;

【JDK API】public class WriteAbortedException extends ObjectStreamException

【描述】在寫入操作過程中拋出 ObjectStreamException 之一的信號。在寫入操作過程中拋出 ObjectStreamExceptions 之一時,在讀取操作過程中將拋出此異常。終止寫入的異常可在詳細信息字段中找到。該流被重置為初始狀態,而且對已經反序列化的對象的所有引用都被丟棄。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM