4
我們在flex中部署了一個應用程序,該應用程序部署在負載平衡的Tomcat 6.0(有一個負載平衡器將請求傳遞給2個tomcat服務器)上。在Tomcat 6.0上加載持久會話時發生IOException
我們在訪問應用程序時遇到了404錯誤。通過將toMat日誌挖掘,我們發現以下錯誤
日誌跟蹤
2013-01-17 10:42:54,148 org.apache.catalina.session.ManagerBase - IOException while loading persisted sessions: java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: bean.Login
java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: bean.Login
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1332)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946)
..
2013-01-17 10:43:04,135 org.apache.catalina.session.ManagerBase - Exception loading sessions from persistent storage
java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: bean.Login
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1332)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946)
…
Caused by: java.io.NotSerializableException: bean.Login
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1164)
原因
此錯誤的可能原因是Tomcat的嘗試序列化所有活動的全部對象圖會話關閉時,然後嘗試恢復它們,當你開始備份。關鍵是Tomcat使用「正常」的java對象序列化,它要求所有對象都是可序列化的。
,我們制訂了登錄豆春季如下
<bean id="currLogin" class="bean.Login" scope="session">
<aop:scoped-proxy />
</bean>
補救
短期
- 刪除在CATALINA_HOME /工作目錄中的文件session.ser
- 重新啓動tomca t服務器
在彈回服務器之後,我們能夠在沒有錯誤的情況下登錄到應用程序。
長期
- 讓bean.Login序列化的實現Serializable接口 。
- 不要有Tomcat的序列化會話(添加 到context.xml中,無論是在應用程序或在conf /目錄下的全球tomcat的 context.xml的,裏面的元素。
請讓我們知道的方法來解決這個問題?