嚴重: IOException while loading persisted sessions: java.io.WriteAbortedException: writing aborted; ja

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

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

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

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

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

        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)服務器

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

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

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

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

        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 之一時,在讀取操做過程當中將拋出此異常。終止寫入的異常可在詳細信息字段中找到。該流被重置爲初始狀態,並且對已經反序列化的對象的全部引用都被丟棄。

相關文章
相關標籤/搜索