# shardingsphere-demo **Repository Path**: Mrxieyong/shardingsphere-demo ## Basic Information - **Project Name**: shardingsphere-demo - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-07-01 - **Last Updated**: 2021-08-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## JSON-RPC学习实践 - json-rpc说白了就是一个轻量级的rpc框架,github网站`https://github.com/briandilley/jsonrpc4j` 它有两种调用方式,标准化调用和泛化调用。通俗解释 标准调用 jsonrpc有一套自己的标准规则,入参和出参都必须要自己的几个标准参数形式。泛化调用指的是将jsonrpc的标准调用进行了改造,改造成我们普通的http调用方式,去除了它本身协议上的几个参数 ```xml com.github.briandilley.jsonrpc4j jsonrpc4j 1.6 ``` ## 源码说明 - 毫无疑问的,json-rpc和springboot整合的时候入口还是DispatcherServlet,首先获取的是Handler处理器 ```java @Nullable protected HandlerExecutionChain getHandler(HttpServletRequest request) throws Exception { if (this.handlerMappings != null) { for (HandlerMapping mapping : this.handlerMappings) { HandlerExecutionChain handler = mapping.getHandler(request); if (handler != null) { return handler; } } } return null; } ``` - 使用json-rpc标准模式的时候,handler这步取的是jsonrpc4j依赖包里面的JsonServiceExporter,这个类可以 去源码里面查看下,它是继承抽象类AbstractJsonServiceExporter[留意内部方法afterPropertiesSet后面的exportService()方法调用] 并且实现了HttpRequestHandler,其中exportService()方法的具体实现是在JsonServiceExporter这里的进行了一个实例化操作。 随后再回到我们的DispatcherServlet类里面,获取了处理器之后再一步进行适配器获取【源码1023行getHandlerAdapter】,普通http调用这里获取的是RequestMappingHandlerAdapter 如果是jsonrpc的标准调用,由于之前实现了HttpRequestHandler接口。适配器相应的是获取到HttpRequestHandlerAdapter