dubbo错误:Exception in thread “main“ com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method g

导读:本篇文章讲解 dubbo错误:Exception in thread “main“ com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method g,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

项目场景:

最近通过b站视频在学习dubbo(特别声明:b站真是个学习的地方,b站快打钱),用dubbo做了一个小demo(案例)
开发环境:Mac、IDEA


问题描述:

错误提示如下:意思是不能够调用这个方法,大家注意看我绿色箭头标注的那行错误提示…

Exception in thread "main" com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method getUserAddressList in the service com.gy.service.UserService. Tried 3 times of the providers [192.168.59.129:8083] (1/1) from the registry zoo1.superboss.cc:30002 on the consumer 192.168.59.129 using the dubbo version 2.6.2. Last error is: Failed to invoke remote method: getUserAddressList, provider: dubbo://192.168.59.129:8083/com.gy.service.UserService?anyhost=true&application=consumer-service-consumer&check=false&dubbo=2.6.2&generic=false&interface=com.gy.service.UserService&methods=getUserAddressList&pid=2150&register.ip=192.168.59.129&remote.timestamp=1603958286554&revision=1.0-SNAPSHOT&side=consumer&timestamp=1603958793263&version=1.0.0-ccc, cause: Failed to send response: Response [id=2, version=2.0.0, status=20, event=false, error=null, result=RpcResult [result=[com.gy.bean.UserAddress@7a2f0b78, com.gy.bean.UserAddress@7e1080e5], exception=null]], cause: java.lang.IllegalStateException: Serialized class com.gy.bean.UserAddress must implement java.io.Serializable
java.lang.IllegalStateException: Serialized class com.gy.bean.UserAddress must implement java.io.Serializable
	at com.alibaba.com.caucho.hessian.io.SerializerFactory.getDefaultSerializer(SerializerFactory.java:395)
	at com.alibaba.com.caucho.hessian.io.SerializerFactory.getSerializer(SerializerFactory.java:369)
	at com.alibaba.com.caucho.hessian.io.Hessian2Output.writeObject(Hessian2Output.java:389)
	at com.alibaba.com.caucho.hessian.io.CollectionSerializer.writeObject(CollectionSerializer.java:99)
	at com.alibaba.com.caucho.hessian.io.Hessian2Output.writeObject(Hessian2Output.java:391)
	at com.alibaba.dubbo.common.serialize.hessian2.Hessian2ObjectOutput.writeObject(Hessian2ObjectOutput.java:88)
	at com.alibaba.dubbo.rpc.protocol.dubbo.DubboCodec.encodeResponseData(DubboCodec.java:192)
	at com.alibaba.dubbo.remoting.exchange.codec.ExchangeCodec.encodeResponse(ExchangeCodec.java:277)
	at com.alibaba.dubbo.remoting.exchange.codec.ExchangeCodec.encode(ExchangeCodec.java:73)
	at com.alibaba.dubbo.rpc.protocol.dubbo.DubboCountCodec.encode(DubboCountCodec.java:38)
	at com.alibaba.dubbo.remoting.transport.netty.NettyCodecAdapter$InternalEncoder.encode(NettyCodecAdapter.java:80)
	at org.jboss.netty.handler.codec.oneone.OneToOneEncoder.handleDownstream(OneToOneEncoder.java:66)
	at org.jboss.netty.channel.DefaultChannelPipeline.sendDownstream(DefaultChannelPipeline.java:591)
	at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendDownstream(DefaultChannelPipeline.java:776)
	at org.jboss.netty.channel.SimpleChannelHandler.writeRequested(SimpleChannelHandler.java:304)
	at com.alibaba.dubbo.remoting.transport.netty.NettyHandler.writeRequested(NettyHandler.java:98)
	at org.jboss.netty.channel.SimpleChannelHandler.handleDownstream(SimpleChannelHandler.java:266)
	...

在这里插入图片描述


原因分析:

在使用dubbo生产和消费的过程中,我们所用到的Java Bean一定要序列化,不然会报以上的问题


解决方案:

解决方法很简单,搜索UserAddress这个Java Bean ,让他继承Serializable并完成序列化操作。

public class UserAddress implements Serializable {

    private static final long serialVersionUID = -3560426973584607769L;

在这里插入图片描述
这里需要注意的是:在完成序列化操作后,我们要重新编译代码,如我是maven的项目,需要重新install发布到本地仓库,然后在消费者的pom依赖中重新导入(即加入了依赖)
在这里插入图片描述
将public-project 公共的Java Bean的项目依赖导入到提供者和消费者的pom依赖中,导入完毕最好重新编译一下maven项目
在这里插入图片描述
在这里插入图片描述
这样,当我们再重新启动提供者和消费者的项目,就可以在消费者项目中使用方法读取到数据啦,当然我们也可以在dubbo-admin(dubbo的管理控制台中看到提供者与消费者),dubbo-admin这个项目我也发布在博客中啦,大家可以点这里👉下载
在这里插入图片描述

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/13677.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!