# dubbo-rpc-jsonrpc **Repository Path**: mirrors_apache/dubbo-rpc-jsonrpc ## Basic Information - **Project Name**: dubbo-rpc-jsonrpc - **Description**: The Json rpc module of Apache Dubbo project - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2020-08-22 - **Last Updated**: 2026-04-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README [![Build Status](https://travis-ci.org/QianmiOpen/dubbo-rpc-jsonrpc.svg)](https://travis-ci.org/QianmiOpen/dubbo-rpc-jsonrpc) ## Why HTTP With the rapid iteration of the Internet, more and more companies choose quick script frameworks such as nodejs, Django and rails to develop web-side applications. Java is the most suitable for back-end service, which resulting in a lot of cross-language invocation requirements. While HTTP and JSON are naturally suitable as cross-language standards, all languages have mature class libraries for them. Although Dubbo's asynchronous long connection protocol is efficient, in scripting languages this loss of efficiency is not important. ## Why Not RESTful Dubbo has made an attempt on the RESTful interface, but there is some difference between the REST architecture and the original RPC architecture of Dubbo. The difference is that the REST architecture needs the definition of resources and we should operate the resources using the basic HTTP methods —— GET, POST, PUT, DELETE. Dubbo needs to redefine the properties of the interface, which is a big burden on the original interface migration of Dubbo. In contrast, RESTful is more appropriate for calls between Internet systems, and RPC is more appropriate for calls within a system, so we used JsonRPC which is more consistent with the Dubbo concept. dubbo-rpc-jsonrpc ===================== ## maven dependency: ```xml com.qianmi dubbo-rpc-jsonrpc 1.0.1 ``` ## Configuration: Define jsonrpc protocol: ```xml ``` Set default protocol: ```xml ``` Set service protocol: ```xml ``` Multi port: ```xml ``` Multi protocol: ```xml ``` ```xml ``` Jetty Server: (default) ```xml or the latest version of jetty: ``` Maven: ```xml org.mortbay.jetty jetty 6.1.26 ``` Servlet Bridge Server: (recommend) ```xml ``` web.xml: ```xml dubbo com.alibaba.dubbo.remoting.http.servlet.DispatcherServlet 1 dubbo /* ``` Be careful if you are using a servlet to send requests: The protocol port `````` must be the same as the port of the servlet container. The protocol context path `````` must be the same as the servlet application context path. CORS(Cross-origin resource sharing): ```xml ``` -------------- ## Example JAVA API ```java public interface PhoneNoCheckProvider { /** * check if the number is limited * @param operators operators * @param no number * @param userid the user identity * */ boolean isPhoneNoLimit(Operators operators, String no, String userid); } ``` Client ```shell curl -i -H 'content-type: application/json' -X POST -d '{"jsonrpc": "2.0", "method": "isPhoneNoLimit", "params": [ "MOBILE", "130000", "A001"], "id": 1 }' 'http://127.0.0.1:18080/com.qianmi.api.PhoneNoCheckProvider' ``` Python Client Example ```python import httplib import json __author__ = 'caozupeng' def raw_client(app_params): headers = {"Content-type": "application/json-rpc", "Accept": "text/json"} h1 = httplib.HTTPConnection('172.19.32.135', port=18080) h1.request("POST", '/com.qianmi.ofdc.api.phone.PhoneNoCheckProvider', json.dumps(app_params), headers) response = h1.getresponse() return response.read() if __name__ == '__main__': app_params = { "jsonrpc": "2.0", "method": "isPhoneNoLimit", "params": ["MOBILE", "130000", "A001"], "id": 1 } print json.loads(raw_client(app_params), encoding='utf-8') ``` ## Python client https://github.com/QianmiOpen/dubbo-client-py ## Node.js client https://github.com/QianmiOpen/dubbo-node-client ## Examples for Client server https://github.com/JoeCao/dubbo_jsonrpc_example run with docker ## Browser call You need to enable CORS support as described above, see https://github.com/datagraph/jquery-jsonrpc ## Documentation [JSON-RPC 2.0 Specification](http://www.jsonrpc.org/specification) [jsonrpc4j](https://github.com/briandilley/jsonrpc4j) [dubbo procotol](http://www.dubbo.io/Protocol+Reference-zh.htm)