Flash Remoting ActionScript API 2.0
S2OpenAMFに含まれる、AS2.0のクラスとJavaBeansをマッピングするサンプルを、AS2.0用に書き換えてみました。環境のセットアップでつまづいただけで、後は簡単でした。もう少し詳しい使い方を見てみるつもりですが、とりあえず動いたので貼り付け!
import AddDto; import mx.remoting.Service; import mx.remoting.PendingCall; import mx.rpc.RelayResponder; import mx.rpc.FaultEvent; import mx.rpc.ResultEvent; mx.remoting.debug.NetDebug.initialize(); var gatewayUrl:String = "http://localhost:8080/S2OpenAMF/gateway"; var serviceName:String = "calculatorName"; var service:Service = new Service( gatewayUrl, null, serviceName, null, null); function doSubmit():Void { var addDto = new AddDto(); addDto.arg1 = Number(num1_txt.text); addDto.arg2 = Number(num2_txt.text); var pc:PendingCall = service.plus(addDto); pc.responder = new RelayResponder(this, "plus_Result", "plus_Fault"); } function plus_Result(re:ResultEvent):Void { var addDto = re.result; ans_txt.text = addDto.result; } function plus_Fault(fa:FaultEvent):Void { trace("faultstring = " + fa.fault.faultstring); trace("faultcode = " + fa.fault.faultcode); trace("type = " + fa.fault.type); trace("detail" + fa.fault.detail); }
要約すると
- Serviceオブジェクトを作る
- service.メソッド名() を呼び出す
- 戻り値としてPendingCallオブジェクトを受け取る
- pendingCall.responderにRelayResponderを設定する
- RelayResponderに従来のonResult, onStatusにあたるメソッド名を設定する。
- 5.に設定したメソッドを定義する
- onResultにあたるメソッドは、ResultEventを引数として受け取る
- onStatusにあたるメソッドは、FaultEventを引数として受け取る
- resultEvent.resultで戻り値が得られる
- RelayResponderはあらかじめ作成しておいて、Serviceオブジェクトのコンストラクタで指定する事もできる。実際の開発ではこのパターンを使いそう。
とりあえず最もシンプルな動きはこんな感じですかね?