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后接下来需要根据方法名和方法的参数类型来获取到对应方法,获取到之后再调用方法获取结果,并返回。

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

        

相关内容

热门资讯

1.9分钟了解!多乐小程序游戏... 1.9分钟了解!多乐小程序游戏破解器!竟然确实有辅助工具(有挂技巧)1、玩家可以在多乐小程序游戏破解...
长期以来!创思维正版辅助器下载... 长期以来!创思维正版辅助器下载!一直确实有辅助器(有挂解密)1、该软件可以轻松地帮助玩家将创思维正版...
玩家爆料!长乐互娱软件助手!一... 玩家爆料!长乐互娱软件助手!一贯真的有辅助挂(讲解有挂)1、游戏颠覆性的策略玩法,独创攻略技巧玩法,...
科普!顺欣茶楼开挂!其实是真的... 科普!顺欣茶楼开挂!其实是真的有辅助神器(有挂教学)1、不需要AI权限,帮助你快速的进行顺欣茶楼开挂...
网友热议!内蒙麻将外卦神器下载... 网友热议!内蒙麻将外卦神器下载!果然存在有辅助挂(的确有挂)1、上手简单,内置详细流程视频教学,新手...
近日!闲来辅助神器下载2022... 近日!闲来辅助神器下载2022!确实真的有辅助方法(新版有挂)闲来辅助神器下载2022辅助器是一种具...
玩家必看!麻雀智能辅助软件!果... 玩家必看!麻雀智能辅助软件!果然存在有辅助挂(有挂功能)1、全新机制【麻雀智能辅助软件ai辅助工具激...
大神推荐!财神十三张福袋多少钱... 大神推荐!财神十三张福袋多少钱!总是是有辅助插件(的确有挂)1、很好的工具软件,可以解锁游戏的财神十...
记者发布!微乐山西威信小程序!... 记者发布!微乐山西威信小程序!一贯存在有辅助教程(果真有挂)记者发布!微乐山西威信小程序!一贯存在有...
1.9分钟了解!同乡游有辅助软... 1.9分钟了解!同乡游有辅助软件吗!一直真的是有辅助app(有挂详情)1、超多福利:超高返利,海量正...