hessian在Java端相对已经很成熟了,flex端资料很少,简单说下客户端的做法。
准备条件:Java提供了一个servlet,这个类提供了一个可供调用的helloworld方法。
Flex端首先要定义一个类,来实现IResponder接口,这是个铺垫,通信的时候要用到。
import mx.rpc.IResponder; public class MyResponder implements IResponder { private var _a:Function; private var _b:Function; public function MyResponder(result:Function,fault:Function) { _a = result; _b = fault; } //onResult call the call back function public function call_a(data:Object):void { _a.call(null,data); } //onFault call the fault handler public function call_b(info:Object):void { _b.call(null,info); } //the function in IResponder public function result(data:Object):void { call_a(data); } //the function in IResponder public function fault(info:Object):void { call_b(info); } }
每次发送请求都要声明一个HessianService,每个请求都要有独自的HessianService来服务。每次请求应答有一个call object对象用来储存一些额外的东西,也就是传说中的call back方式,AS也完全是异步的事件处理。为了方面,有一个叫做AsyncToken的类,已经封装好了,发送请求的时候new一个token,这个token要加上一个responder,来对返回结果进行处理。代码如下:
private function callHello():void { var service:HessianService=new HessianService("http://10.1.0.69:8080/learnHessian/learnhessian"); var token:AsyncToken=service.hello.send(); token.addResponder(new MyResponder(myResultHandler, myFaultHandler)); }