weblogic jdbc NotSerializableException异常分析

阅读更多
系统启动时,会加载ejb远程服务对象,ejb远程服务地址t3://jndi.url:7001的配置,经智能DNS解析t3://jndi.url:7001域名获得一个非本地IP,最后得到一个非本地jndi的dataScource。
由于该DataSource的jndi是远端服务器,所以getConnection时远端服务器会从jdbc pool中获取jdbc connection,然后将connection对象网络传输返回给本地,由于jdbc connection是不能被序列化的,所以本地反序列化connection对象失败,本地服务输出pafa异常日志,远程服务器的connection不会被释放(由于被引用,所以只能通过重启应用才能释放)。由于本地服务失败,会继续尝试,所以会大量出现NotSerializableException,最后直至jdbc pool overload。

将t3://jndi.url:7001的配置修改为t3://localhost:7001之后,getConnection为从本地context 的jndi中获取jdbc connection,由于是本地调用,不涉及网络调用,一定不会出现序列化问题,connection可以正常的使用和释放,所以不会出现jdbc pool overload现象

你可能感兴趣的:(weblogic jdbc NotSerializableException异常分析)