I use org.apache.dubbo:dubbo-spring-boot-starter:2.7.1 as provider,but consumer use com.alibaba:dubbo:2.8.4。
dubbo throw the exception:
com.alibaba.com.caucho.hessian.io.HessianProtocolException: expected map/object at java.lang.String (Lcom/weimai/medical/report/facade/dto/DemoDTO;)
at com.alibaba.com.caucho.hessian.io.AbstractDeserializer.error(AbstractDeserializer.java:131)
at com.alibaba.com.caucho.hessian.io.AbstractMapDeserializer.readObject(AbstractMapDeserializer.java:70)
at com.alibaba.com.caucho.hessian.io.Hessian2Input.readObject(Hessian2Input.java:2267)
at com.alibaba.com.caucho.hessian.io.Hessian2Input.readObject(Hessian2Input.java:2074)
at org.apache.dubbo.common.serialize.hessian2.Hessian2ObjectInput.readObject(Hessian2ObjectInput.java:92)
at org.apache.dubbo.rpc.protocol.dubbo.DecodeableRpcInvocation.decode(DecodeableRpcInvocation.java:123)
at org.apache.dubbo.rpc.protocol.dubbo.DecodeableRpcInvocation.decode(DecodeableRpcInvocation.java:70)
at org.apache.dubbo.rpc.protocol.dubbo.DubboCodec.decodeBody(DubboCodec.java:131)
at org.apache.dubbo.remoting.exchange.codec.ExchangeCodec.decode(ExchangeCodec.java:122)
at org.apache.dubbo.remoting.exchange.codec.ExchangeCodec.decode(ExchangeCodec.java:82)
at org.apache.dubbo.rpc.protocol.dubbo.DubboCountCodec.decode(DubboCountCodec.java:46)
at org.apache.dubbo.remoting.transport.netty4.NettyCodecAdapter$InternalDecoder.decode(NettyCodecAdapter.java:90)
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:502)
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:441)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:278)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:345)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:337)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1408)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:359)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:345)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:930)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:677)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:612)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:529)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:491)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:905)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.lang.Thread.run(Thread.java:748)
code:
@Service
public class TestServiceImpl implements TestService {
private ReportFileDetailEntityDao reportFileDetailEntityDao;
@Autowired
public TestServiceImpl(ReportFileDetailEntityDao reportFileDetailEntityDao) {
this.reportFileDetailEntityDao = reportFileDetailEntityDao;
}
@Override
public RpcResult test(DemoDTO dto) {
ReportFileDetailEntity entity = reportFileDetailEntityDao.selectByPrimaryKey(dto.getId());
DemoDTO demoDTO = new DemoDTO();
demoDTO.setId(entity.getId());
return RpcResultUtil.success(demoDTO);
}
}
public class DemoDTO implements Serializable {
private static final long serialVersionUID = 8627766911868209777L;
private Long id;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
Do consumers and providers have to use the same version?? How can i resolve this problem,thanks!
Environment
Steps to reproduce this issue
I use org.apache.dubbo:dubbo-spring-boot-starter:2.7.1 as provider,but consumer use com.alibaba:dubbo:2.8.4。
dubbo throw the exception:
code:
Do consumers and providers have to use the same version?? How can i resolve this problem,thanks!