dubbo调用zk注册的service反序列化问题,字节码错误问题

1 篇文章 0 订阅
1 篇文章 0 订阅

 

    业务层接口注册到zk中,控制器通过dubbo调用zk中暴露的接口,每次调用service都会抛如下异常:

com.alibaba.dubbo.remoting.RemotingException: Fail to decode request due to: RpcInvocation [methodName=getConsumeRecordByPage

  

 

    使用zooinspector观察在zk中注册的provider、consumer都是正常,网上很多碰到此类异常的,大部分说法就是传递bean对象包含无法序列化的属性,经验证,不适合。不过异常信息页说的很清楚,dubbo decode时发生的错误,看了下dubbo的源码,流程并不复杂,provider注册,consumer调用,参数先encode,然后decode,看了下service才层,因为是工程云改造,原service层调用的dubbo是2.5.3,目前控制器引入的2.8.4,引用最新原则,service层也改用了2.8.4,编译启动service,一切ok,编译启动控制器,抛出了第二个错误。

 

 

java.lang.RuntimeException: java.io.IOException: invalid constant type: 15

 

 

javassist版本过低导致的。目前jdk使用的1.8,dubbo2.8.4依赖javassit 3.20,dubbo2.5.3依赖javassist3.15版本,庆幸使用了dubbo2.8.4,javassist版本都改成了3.20.0-GA,保险起见,本地maven库也将旧版本javaassit删除掉,编译、启动,仍抛异常,本地maven库除了3.20.0-GA版本,也不见其它版本了。检查pom文件,查看所有依赖,最后发现struts2-spring-plugin依赖了3.15,exclude,编译启动,一切ok!

 

  PS.  一直以为依赖的jar也会下载到本地maven库,误区。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值