Dubbo consumer消费端启动报错java.lang.RuntimeException: [source error] not available in a static method: h

2020-09-27 15:19:54 浏览数 (1)

背景

java.lang.RuntimeException: [source error] not available in a static method: handlere

RPC调用过程

首先简单了解下RPC调用过程: 1、 服务消费方(client)调用以本地调用方式调用服务; 2、client stub接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体(序列化); 3、client stub找到服务地址,并将消息(字节数组)发送到服务端; 4、server stub收到消息后进行解码(反序列化); 5、server stub根据解码结果调用本地的服务; 6、本地服务执行并将结果返回给server stub; 7、server stub将返回结果打包成消息并发送至消费方; 8、client stub接收到消息,并进行解码(反序列化) 9、消费方得到最终结果;

分析

上面的client stub可以简单理解为是客户端的动态代理生成的服务接口的代理类;

代理类的生成方式:在服务启动时,在Proxy.getProxy中使用javaassit动态生产接口

解决

根据实际使用场景,consumer中不会调用服务接口的static方法,就算调用也不需要使用代理,所以修改为在代理类不生成static的代理方法;

修改为:

0 人点赞