温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Tomcat集群session复制与Oracle的坑怎么解决

发布时间:2021-12-07 11:22:44 来源:亿速云 阅读:112 作者:iii 栏目:大数据

这篇文章主要介绍“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的坑怎么解决”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI