一、环境准备

下载需要的jar包和js文件,下载地址:https://yunpan.cn/cxvbm9DhK9tDq  访问密码 6a50

二、新建一个web工程,jsonrpc-1.0.jar复制到lib目录下,jsonrpc.js放到WebContent目录下,如下图所示:

jsonrpc java jsonrpc java tcp netty_jsonrpc java

到此,环境已经准备完毕。

简单实例:

一、新建RPC远程调用的类,RPCTest.java,如下图所示:

jsonrpc java jsonrpc java tcp netty_RPC_02

源码如下:

package com.cvicse.ump.rpc;
import java.util.HashMap;
import java.util.Map;
public class RPCTest {
public String TestStringRpc(String rpcString){
return "rpc字符串:"+rpcString;
}
public Map TestMapRpc(String schoolName){
Map map = new HashMap();
map.put("初一","好好学习,努力上初二");
map.put("初二","好好学习,努力上初三");
map.put("初三","好好学习,努力上大学");
return map;
}
}

代码分析:函数TestStringRpc返回一个字符串;函数TestMapRpc返回一个map。

二、新建jsp,调用远程接口,如下图所示:

jsonrpc java jsonrpc java tcp netty_jsonrpc java_03

源码如下:

RPC TEST 
 
function callback(result, exception){if (exception == null) {
alert(result);
}else{
alert(exception.message);
}
}
function getRPCName(){
jsonrpc.RPCTest.TestStringRpc(callback,"你好,祖国!");
}
function getRPCMap(){
jsonrpc.RPCTest.TestMapRpc(receive,"实验中学");
}
function receive(result, exception){if (exception == null) {
var mid=result.map;for(var key in mid){
alert(key+":"+mid[key]);
}
}else{
alert(exception.message);
}
}

源码分析:

生成一个JSONRPCBridge对象:;

生成一个RPCTest对象:;

引入jsonrpc.js文件:

把要远程调用的对象注册:JSONRPCBridge.registerObject("RPCTest", RPCTest);

定义远程调用的客户端:var jsonrpc = new JSONRpcClient("JSON-RPC");函数参数"JSON-RPC"调用servlet的url,和后面Web.xml中定义的servlet中url对应;

真正的远程调用:jsonrpc.RPCTest.TestStringRpc(callback,"你好,祖国!");和jsonrpc.RPCTest.TestMapRpc(receive,"实验中学");参数中的callback和receive是两个对应的回调函数。

三、在Web.xml中,配置对应的servlet,如下图所示:

jsonrpc java jsonrpc java tcp netty_JSON_04

源码如下:

http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
JSONRPCServlet
com.metaparadigm.jsonrpc.JSONRPCServlet
JSONRPCServlet
/JSON-RPC
index.jsp

注意:url-pattern中的/JSON-RPC与jsp中var jsonrpc = new JSONRpcClient("JSON-RPC");中的参数一致。

运行效果:

jsonrpc java jsonrpc java tcp netty_json_05

对应工程源码:https://yunpan.cn/cxvzMXyEFS6tf  访问密码 6561