Dubbo服务通常依赖一个jar包来表示服务签名,其中包含了服务的接口定义。
服务的提供者(服务端)需实现这些接口;
服务的调用者(客户端)可以通过这些接口调用服务。
问题
此文提到的异常 “com.esotericsoftware.kryo.KryoException: Buffer underflow” 通常是因为服务端和客户端持有的jar包版本号相同,但实际内容不同,导致序列化异常。
出现这种情况的原因往往是因为项目管理流程混乱,导致jar包被覆盖发布(版本号相同,但实际内容不同)。
对!你没有看错,是正式版jar包覆盖发布,不是SNAPSHOT。管理非常混乱。
解决方法
-
临时解决方案:让服务端和客户端使用相同的jar包。这个过程可能需要清理Maven仓库,重新打包服务端和客户端。
-
优化方案:改进项目管理流程,避免覆盖发布。很多小作坊项目管理非常混乱,净瞎搞,经常出管理问题。