|
Integration_Flex
en, ja FlexからT2を使うときの詳細ドキュメントです. FlexとT2を使うT2でFlexを使う場合にはAMF通信をするのがベストです.AMFでの通信はJSONの4倍程度の速度向上が見込めます. T2ではこのAMF通信を簡単に行うための仕組みが提供されており、ほぼ設定無しで通信することができます. AMF通信を使うためにはT2ではライブラリとしてはBlazeDSかT2独自の実装を使います. どちらにするかは原則クラスパスで判断できます.例えばBlazeDSのjarを追加しておけば、BlazeDSで動きます. お知らせT2のAMF通信では現在のところリモーティング機能のみサポートしています.サーバプッシュはサポートしていません. T2AMFの概要図
サンプルFlex側での設定Flex側では、RemoteObjectで通信します. RemoteObjectで、destinationはPageクラスのurl名を入れます.下記のmxmlだとamdtestというURLを指定します. RemoteObjectのendpoint属性はは特に指定はありませんが必須なので何か値を入れておきます.慣習的にここでは"t2.amf"とします. mxml <mx:RemoteObject id="remote" destination="amftest" endpoint="t2.amf"/> ActionScriptでは普通にRemoteObjectを使って通信します. 下記のコードは非常にシンプルにした通信コードです. ActionScript public function creationCompleteHandler(e:FlexEvent):void
{
document.button.addEventListener(MouseEvent.CLICK, function(e:MouseEvent):void {
var token:AsyncToken = document.remote.findAll();
token.addResponder(new AsyncResponder(resultHandler, faultHandler));
});
}
public function resultHandler(e:ResultEvent, o:Object=null):void
{
var people:ArrayCollection = e.result as ArrayCollection;
document.peopleGrid.dataProvider = people;
}
public function faultHandler(e:FaultEvent, o:Object=null):void
{
Alert.show("error : " + e.message);
}
Java側での設定Java側でも特に設定等は必要なく、T2のPageクラスを作れば良いだけです. Flexからのリクエストを受け取るメソッドにはアノテーションとしては@Amfをつけておきます. @Page("amftest")
public class AmfTestPage {
@Amf
public Navigation findAll() {
List<Person> ret = new ArrayList<Person>();
//some logic here
return AmfResponse.to(ret);
}
}これだけでFlex<=>Java間の通信が可能になります.非常に簡単だということがわかってもらえたのではないでしょうか. T2AMF仕様T2は独自でAMF解釈することが出来る機能T2AMFをもっており、BlazeDSを使わなくてもAMFを解釈して、Pageクラスのメソッドを呼び出せます. ここではT2AMFの仕様を記載します. 仕組みAMF通信を処理するためには大きく分けて2つの部分からなります. 変換ルールT2AMFではActionScriptとJavaの間の変換は以下のようなマッピングで行っています.
拡張ポイント
TODO. | |