JSON-RPC-Java学习之类型映射及js客户端调用

      为了让JSON-RPC-Java能透明地解组(unmarshall)复杂的嵌入式对象,并使用Java容器类型的用法,JSON-RPC就需要有一种机制来保存类型信息。我们知道,JavaScript是一种弱类型语言,而Java是一种强类型的,如何在二者之间进行一种对应呢?其实就是通过JavaScript的直接量类实现的。

     在JSON-RPC-Java协议中,Java类在JavaScript中的表示如下:

     对于Java Beans:{
         "javaClass": "com.example.MyBean",
         "someStringProperty": "foo",
         "someBooleanProperty": true,
         "someIntegerProperty": 10
    }

    对于List:{
        "javaClass": "java.util.ArrayList",
       "list": [0, 1, 2, 3, 4]
     }

     对于Map:{
           "javaClass": "java.util.HashMap",
          "map": {"foo key": "foo value"}
      }

      对于Set:{
          "javaClass": "java.util.HashSet",
          "set": {"foo key": "foo key"}
      }

      我们知道,在JavaScript中,可以用直接量(Literals)来描述数值,可以通过直接量来创建数组、字符串和对象等,其所表示的是常量而不是可变的值。在此,我们上面所看到的代码就是用JavaScript的对象直接量所表示的。对象直接量是一个有零或多对具有属性名和相对应属性值的列表,例如car = {myCar: "Saturn", getCar: CarTypes("Honda"), special: Sales},就表示创建了car对象,其有三个属性myCar、getCar、special,值分别是“:”后面的字符串。通过JavaScript直接量,我们就可以建立Java对象与JavaScript对象之间的映射了。

      了解了JSON-RPC-Java使用的是JavaScript直接量来在客户端和服务器端之间传输数据的之后,对该协议也就不会觉得神秘了。接下来就介绍一下JSON的js客户端:

      JavaScript客户端JSONRpcClient创建一个透明的提供方法访问服务器端所有方法的代理,其创建格式为:var jsonrpc = new JSONRpcClient("/webapp/JSON-RPC/");还可以加上验证信息如:var jsonrpc = new JSONRpcClient("/webapp/JSON-RPC/",user,pass);

      JSONRpcClient对象的构造函数首先使用内置的返回对象所有可以得到方法的方法system.listMethods查询服务器得到对象所有可以访问的方法,然后这些方法就以服务器端同名的方式被添加到新的JSONRpc Client对象中去,客户端就可以使用了。

       客户端与服务器端的通信,有同步和异步两种方式。同步就是说客户端发送完请求后必须等待服务器端响应结果,才能进一步做其他的事;而异步则表示客户端发送完请求后不必等待服务器端的响应就立即返回,服务器把响应传给回调函数(将在后面介绍)处理,其有点像事件处理机制。JSON-PRC-Java也支持这两种通信处理方式:

       对于同步调用,在客户端只需:jsonrpc.test.echo("hello");//调用test类的echo方法,输出“hello”;

      对于异步调用,还需要写回调函数(callback),也非常的简单,只需把回调函数插入到要调用的方法内作为其第一个参数即可:jsonrpc.test.echo(cb, "hello"); 而回调函数(cb)的写法如下所示,一般都有两个参数:作为结果的result和可能的异常信息exception。

        function cb(result, exception) {
            if(exception) { alert(exception.message); }
            // do stuff here ...
        }

     通过以上几步,我们就可以使用JSON-RPC-Java协议了,在其基础上开发自己的应用程序了。

     其他如异常以及引用等知识就步一一介绍了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值