项目中使用的fastjson版本为:1.1.41,今天突然在重启线上服务器后莫名出现异常,而这个异常以前重来没有出现过,这个异常类似这样:
百思不得其解,因为我返回的对象中根本就没有com.xxx.common.dto.pager.PagerData 这个对象信息,为什么在序列化的时候会出现这个错误呢,非常怪异。让人十分摸不着头脑的是这个错误是重启服务器后发生。毕竟线上一直在报错,当时情急之下的解决办法试了两个方法:
- 再次重启服务器
重新启动服务器几次,错误依然,仅仅一次代码的小调整(根本和报错的问题风马牛不相及),但是启动服务器就报这个错,给跪了! - 赶紧找其它json类库暂时替代
json框架毕竟我还是熟悉几个的,情急下只能仓促使用Gson(google出品的json框架)临时替代了fastjson的json序列化输出,问题解决!!!
然后就是走上了寻找问题之路,找到fastjson的github网站,在issue列表中经过一些查找搜索终于找到一个issue和我遇到问题非常相像:
我于是赶紧到Maven库查看fastjson版本,不看不知道,一看版本已经演进了好多,最新版本已经是1.2.7,更新代码maven依赖至1.2.7,然后测试发布到线上,多次重启确定没有再出现强制类转换异常。
关于这个错误的造成原因,还没有深入去了解是什么原因造成的,因为这个异常有一定的偶然性,可验证性比较差,线上服务器也是偶发出现。代码提交也没有明确是在哪次提交的时候修复了这个bug,等后面有时间再看看这个问题。