您好,登錄后才能下訂單哦!
這篇文章主要介紹“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.T4CConnection at 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的坑怎么解決”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。