(17)Cairngorm+S2Flex2での実装例(as側)
AS側にCairngormを採用している場合の実装例です。
基本的には、ServiceLocatorでRemoteObjectを記述している部分をS2Flex2Serviceタグに入れ替えるだけです。
■Serviceクラス
くどいようですが、ServiceLocatorは複数作成しても使用できません。
1サービスクラス(mxml)内に全てのサービスクラスを登録するのが正しい作法です。
■Serviceクラスを実行するクラス
・・・
public class AddLogic{
private var service : AbstractService;
private var responder : IResponder;
・・・
/**
* コンストラクタ。
*/
public function AddLogic(callingCommand : IResponder){
// S2Flex2Serviceインスタンス取得
this.service = ServiceLocator.getInstance().getService("addService");
this.responder = callingCommand;
}
/**
* java側サービスメソッドの実行
*/
public function doCaluclate(dto :AddDto):void{
// サービス実行
var call:Object = this.service.calculate2(dto);
call.resultHandler = this.responder.result;
call.faultHandler = this.responder.fault;
}
・・・
}
こんな感じになります。
任意のCommandクラスで、上記クラスを呼び出すと、CommandクラスのIResponderのメソッド(result,fault)に返ってきます。
Cairngormについては、以前に書いてますのでそちらを見てみてください。(33) Cairngorm 2.1 シリーズの目次 - hirossy javaとFlex2と。
次回は、サーバサイドをAMFPHPにする です。まだ実現してませんが、今から試してみます。