你的名字叫阿迷
你有两台服务器
代码都是同一套
一到一服就报错
这是我最近遇到的一个问题
同一个请求,一样的前端传参,每当走到01服务器的时候,就会报错,提示
org.codehaus.jackson.map.exc.UnrecognizedPropertyException:Unrecognized field "plan_start_time"(class.domain.dto.request.course.RoomListRegDTO),not marked as ignorable.domain.dto.request.course.RoomListRegDTO["plan_start_time"])
说我们请求的JSON中包含字段 plan_start_time,但目标DTO类 RoomListReqDTO 没有这个字段
那就很奇怪了,这个class类中是有这个字段的,不是_格式也无所谓,会自动转,02服务器好使就说明不是这个问题
因为没有任何业务编写类提示报错,这证明在参数校验阶段就错了,请求并没有走到具体Controller里,我也尝试了网上搜到的@JsonIgnoreProperties(ignoreUnknown = true)或者@JsonProperty,部署后都没效果,乂,一步一步看吧
一模一样的jar包,没看出任何问题
难道是jdk版本?
别说哈,确实不一样,所以我去
01服务器修改了catalina.sh配置文件,下载好对应版本进行指定
重启后依旧大败而归
麻了,真麻了,jar一样,代码一样,服务器环境一样,请求参数一样,问题到底还能出在哪里?
偶然的又一次排查,我发现
为什么这个jackson既有1版本的引用,又有2版本的引用呢?
抱着试一试的心态
先备份好这四个文件-rm删除-重启-关闭另一个服务器-请求-成功了!
问题到这里就解决了,确实是因为版本冲突的原因
但是,为什么在02服务器上,没有产生请求错误的情况呢?
这也是我耗费了很多时间都没有找到这个bug的根本原因
也许是类加载顺序不同的原因?(主打猜测)
各位局座可有高见