DangerWind-RPC-framework---五、服务端的反射调用
创始人
2025-01-09 04:04:10
0

       当服务端接收并解析来自客户端发出的数据之后,该如何调用客户端希望调用的方法呢?这主要是通过反射实现的。

       在服务启动发布的过程中,在服务端已经存储了服务名和对应Bean的映射:

    private final Map serviceMap;     private final Set registeredService;      @Override     public void addService(RpcServiceConfig rpcServiceConfig) {         String rpcServiceName = rpcServiceConfig.getRpcServiceName();         if (registeredService.contains(rpcServiceName)) {             return;         }         registeredService.add(rpcServiceName);         serviceMap.put(rpcServiceName, rpcServiceConfig.getService());         log.info("Add service: {} and interfaces:{}", rpcServiceName, rpcServiceConfig.getService().getClass().getInterfaces());     }

       接收到对应数据后,首先就是需要找到对应的Bean,找到对应的Bean后,就可以使用反射调用对应方法:

   public Object handle(RpcRequest rpcRequest) {         Object service = serviceProvider.getService(rpcRequest.getRpcServiceName());         return invokeTargetMethod(rpcRequest, service);     }      private Object invokeTargetMethod(RpcRequest rpcRequest, Object service) {         Object result;         try {             Method method = service.getClass().getMethod(rpcRequest.getMethodName(), rpcRequest.getParamTypes());             result = method.invoke(service, rpcRequest.getParameters());             log.info("service:[{}] successful invoke method:[{}]", rpcRequest.getInterfaceName(), rpcRequest.getMethodName());         } catch (NoSuchMethodException | IllegalArgumentException | InvocationTargetException | IllegalAccessException e) {             throw new RpcException(e.getMessage(), e);         }         return result;     } }

        getService就是从服务端注册时的本地缓存中取出Bean。得到Bean后接下来需要根据方法名和方法的参数类型来获取到对应方法,获取到之后再调用方法获取结果,并返回。

        获取到相应结果之后,再按照相应的通信规则进行包装处理,发送给客户端进行响应。

        

相关内容

热门资讯

玩家必看分享!德州之星辅助软件... 玩家必看分享!德州之星辅助软件介绍,微扑克机器人,攻略教程(有挂辅助)-哔哩哔哩;小薇(透视辅助)致...
2分钟理解!wepoker可以... 2分钟理解!wepoker可以开透视吗,wpk俱乐部是做什么的(透视)黑科技教程(发现有挂)1.wp...
黑科技ai!(线上德州aapo... 黑科技ai!(线上德州aapoker)外挂软件透明挂辅助脚本!(德州之星有外挂)攻略教程(2020已...
科普!红龙扑克透牌辅助器,aa... 科普!红龙扑克透牌辅助器,aapoker发牌机制,AI教程(确实有挂)-哔哩哔哩;红龙扑克透牌辅助器...
九分钟普及!德普之星透视辅助,... 九分钟普及!德普之星透视辅助,wpk真吗(透视)解密教程(详细教程)1、德普之星透视辅助透视辅助简单...
复盘辅助挂!(线上德州ai机器... 复盘辅助挂!(线上德州ai机器人)外挂辅助黑科技!(德扑之星ai代打可以弄)wpk教程(2026已更...
第2分钟了解!wepoker透... 第2分钟了解!wepoker透视挂底牌,佛手在线大菠萝辅助(透视)AI教程(存在有挂)1、下载好佛手...
揭秘!(wpk后台)外挂透明挂... 揭秘!(wpk后台)外挂透明挂辅助安装插件!(微扑克有后台控制)安装教程(2026已更新)(哔哩哔哩...
大家学习交流!德扑输赢概率计算... 大家学习交流!德扑输赢概率计算器,红龙扑克发牌有问题,AA德州教程(真是有挂)-哔哩哔哩;详细红龙扑...
十分钟理解!智星菠萝辅助,we... 十分钟理解!智星菠萝辅助,werplan怎么透视(透视)教你教程(果真有挂)1、超多福利:超高返利,...