Tomcat集群session复制与Oracle的坑
生活随笔
收集整理的這篇文章主要介紹了
Tomcat集群session复制与Oracle的坑
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉載自?Tomcat集群session復制與Oracle的坑
問題描述
公司某個系統使用了tomcat自帶的集群session復制功能,然后后報了一個oracle驅動包里面的連接不能被序列化的異常。
01-Nov-2017 16:45:26.653 SEVERE [https-jsse-nio-8443-exec-2] org.apache.catalina.ha.session.DeltaManager.requestCompleted Unable to serialize delta request for sessionid [F825A52DD9E0E7F8FD6BB3E3F721F841]java.io.NotSerializableException: oracle.jdbc.driver.T4CConnectionat java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1183)at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1547)at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1508)at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1431)at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1177)at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1547)at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1508)解決方案
看到這個問題,首先檢查整個系統里面的代碼有沒有用到T4CConnection或者java.sql.Connection并將它們放到了session中。
檢查后發現系統并沒有用到任何及相關的類放在session中。
接下來就運維的同學頭疼了,換tomcat版本、改各種tomcat相關的配置都沒有解決。
然后我判斷可能是程序或者數據導致的問題,果然,在經過逐一排查窮舉測試,發現干掉某個對象后功能正常了,不報序列化的錯誤了。而在干掉的那個對象里面發現使用了java.sql.Clob類型,曾幾何時在網上有看到過這個異常,在tomcat session復制時使用了這個類型的字段是會出問題的。
真是茅塞頓開,經常確認,那個Clob字段在實際應用中并沒有使用到,所以最后去掉該字段,折騰了整個團隊兩三天的問題最終得已解決。
tomcat真是醉了,session復制你不支持Clob字段,你報一個oracle驅動不能序列化的錯誤,有點誤導,讓人迷失方向,還好問題解決了。。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
總結
以上是生活随笔為你收集整理的Tomcat集群session复制与Oracle的坑的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 联想8703n平板参数?
- 下一篇: Tengine-Ngnix高级版