Decode rpc invocation failed: expected map/object at java.lang.String (Ljava/lang/String;)
来源:互联网 发布:linux修改主机名 编辑:程序博客网 时间:2024/06/05 22:58
dubbo是阿里开源的一款分布式服务治理框架,在国内使用率比较高,今天在跟同事联调服务时报了下面的错误信息:
WARN c.a.d.r.p.d.DecodeableRpcInvocation - [DUBBO] Decode rpc invocation failed: expected map/object at java.lang.String (Ljava/lang/String;), dubbo version: 2.8.4, current host: xx.xx.xx.xx
com.alibaba.com.caucho.hessian.io.HessianProtocolException: expected map/object at java.lang.String (Ljava/lang/String;)
at com.alibaba.com.caucho.hessian.io.AbstractDeserializer.error(AbstractDeserializer.java:108) ~[dubbo-2.8.4.jar:2.8.4]
at com.alibaba.com.caucho.hessian.io.AbstractMapDeserializer.readObject(AbstractMapDeserializer.java:70) ~[dubbo-2.8.4.jar:2.8.4]
at com.alibaba.com.caucho.hessian.io.Hessian2Input.readObject(Hessian2Input.java:1696) ~[dubbo-2.8.4.jar:2.8.4]
at com.alibaba.dubbo.common.serialize.support.hessian.Hessian2ObjectInput.readObject(Hessian2ObjectInput.java:94) ~[dubbo-2.8.4.jar:2.8.4]
at com.alibaba.dubbo.rpc.protocol.dubbo.DecodeableRpcInvocation.decode(DecodeableRpcInvocation.java:150) ~[dubbo-2.8.4.jar:2.8.4]
at com.alibaba.dubbo.rpc.protocol.dubbo.DecodeableRpcInvocation.decode(DecodeableRpcInvocation.java:74) ~[dubbo-2.8.4.jar:2.8.4]
at com.alibaba.dubbo.rpc.protocol.dubbo.DubboCodec.decodeBody(DubboCodec.java:138) [dubbo-2.8.4.jar:2.8.4]
at com.alibaba.dubbo.remoting.exchange.codec.ExchangeCodec.decode(ExchangeCodec.java:134) [dubbo-2.8.4.jar:2.8.4]
at com.alibaba.dubbo.remoting.exchange.codec.ExchangeCodec.decode(ExchangeCodec.java:95) [dubbo-2.8.4.jar:2.8.4]
at com.alibaba.dubbo.rpc.protocol.dubbo.DubboCountCodec.decode(DubboCountCodec.java:46) [dubbo-2.8.4.jar:2.8.4]
at com.alibaba.dubbo.remoting.transport.netty.NettyCodecAdapter$InternalDecoder.messageReceived(NettyCodecAdapter.java:134) [dubbo-2.8.4.jar:2.8.4]
at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70) [netty-3.7.0.Final.jar:na]
at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) [netty-3.7.0.Final.jar:na]
at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559) [netty-3.7.0.Final.jar:na]
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268) [netty-3.7.0.Final.jar:na]
at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255) [netty-3.7.0.Final.jar:na]
at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88) [netty-3.7.0.Final.jar:na]
at org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:109) [netty-3.7.0.Final.jar:na]
at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:312) [netty-3.7.0.Final.jar:na]
at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:90) [netty-3.7.0.Final.jar:na]
at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178) [netty-3.7.0.Final.jar:na]
at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108) [netty-3.7.0.Final.jar:na]
at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42) [netty-3.7.0.Final.jar:na]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_92]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_92]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_92]
最终查到问题出在我们两人使用的dubbo不一样,虽然都是2.8.4版本,但hessian反序列化的类在实现上有所不同,导致解析报文出错。
注:其实通信双方dubbo版本不兼容,出现的问题不只上面一种,笔者将调用方与服务提供方的dubbo版本互换则得到另外一个错误,但这两种错误最后出问题的地方都是Hessian反序列化的地方!
- Decode rpc invocation failed: expected map/object at java.lang.String (Ljava/lang/String;)
- java.lang.String cannot be cast to [Ljava.lang.Object
- java.lang.String cannot be cast to [Ljava.lang.Object
- java.lang.String cannot be cast to [Ljava.lang.Object;
- java.lang.String cannot be cast to [Ljava.lang.Object
- Java.lang.String & [Ljava.lang.String
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
- [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
- [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
- [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
- java.lang.ClassNotFoundException: [Ljava.lang.String解决办法
- java.lang.ClassNotFoundException: [Ljava.lang.String解决办法
- java.lang.AbstractMethodError: ... Ljava/lang/String
- 错误:java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.lang.String
- 关于java.lang.ClassCastException: java.lang.String cannot be cast to [Ljava.lang.Object的错误报告
- java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.lang.String
- java.lang.NoSuchMethodError: org.apache.commons.validator.Validator.setParameter(Ljava/lang/String;Ljava/lang/Object;)V解决方法
- /lang/String;[Ljava/lang/String;Ljava/lang/String;)V 解决
- C++中有符号类型(int)和无符号类型(unsigned int)混合算术运算的类型转换会出现的问题
- 操作系统常考面试题
- 权值线段树小结
- Java创建多线程的三种方法
- RecyclerView上下拉刷新
- Decode rpc invocation failed: expected map/object at java.lang.String (Ljava/lang/String;)
- redis数据结构详解之Hash(四)
- MySQL复习秘籍
- 15分钟成为Git专家
- FaceBook 三方分享 之 添加Android平台 的 密钥散列
- ubuntu下修改环境变量以及添加PYTHONPATH方法
- 多表关联前端生成json传值给后台(类似树形结构)
- 手把手交你解决Android studio无法导入项目问题
- 漂亮的css文字效果