これまで、S2Flex2は"勝手にS2Flex2"でやっていた延長で考えていました。
CFAdapeterのGatewayを利用してAdapterだけ拡張してSeasar2とつなぐイメージです。S2FlexもFlexに付属するgateway.jarを利用してAdapterを作成してSeasar2と接続できるようになっています。
ひがさんのこのエントリにあるように、CFAdaperはライセンス的に厳しいということなので、路線変更することになりました。
ということなので、livedocsにある Creating and Extending Flex Components を見たり、時計のサンプルを見たりしてコンポーネントとタグ化の方法を見ていました。
AS3で普通にクラスを書いてmetaDataをつけることで呼び出すmxmlで参照したり、タグの属性として指定することができることはわかりました。
つぎはクラス作成->接続テストをしようと思います。
クラス作成するときにポイントになりそうなのが、どうやって任意のリモートメソッドを呼べるかと言う部分です。
これまで使っていたRemoteObjectタグは宣言したあと呼び出すメソッドはスクリプト内で自由に呼び出しています。
<mx:RemoteObject id="test" destination="TestBean" ..>
と宣言されていると、あとはスクリプトでTestBeanで定義されたクラスのメソッドを
呼び出します。
<mx:Script>
<![CDATA[
function getData(){
test.getValue(); <-RemoteObjectのgetValue()を呼び出す。
}
]]>
</mx:Script>
AS2のときに、任意のメソッドを呼ぶ場合は__resolveというメソッド経由で実行していたのですがAS3はProxyクラスというのを使うようになるとのことです。
このProxyを継承したクラスを作成すれば、任意のリモートメソッドを呼べるようになる気がします。
今日(昨日)は調べるだけで何も書いていません。m(__)m
もともと利用してたCFAdapterは名前はCFAdapterですが、接続できるのはCFだけではないようです。
少なくとも今の段階(0.3)でJavaとの接続はできるようになっていて、これまでのFlashRemoting(AMFGateway)と同等の機能があります。
これまでのAMFGatewayと異なっているのは、AMF3が解釈できるものとなっています。Flex2からはAMFのバージョンが3がデフォルトになっています。(AMF2はなかったのに... ASが3だからでしょうか..)
これまでFlashRemoting は別製品としてありましたがColdFusionやJrunは別途購入しなくてもAMFGatewayを利用することができているようなので(やったことないです..)ColdFusionやJrunを購入するとCFAdapterのライセンスはきっとついてくると思います。
今後のS2Flex関連のTODOだと思われるもの:
- AMF0で接続するクラスを作成してみる
- mxmlから呼んでみる
- mxmlでタグの属性を指定する際に補完ができるようにmetaタグを追加する
S2OpenAMFにつなげられたら...
- <mx:RemoteObject>のようにコンパイル時に指定するflex-services.xmlのデータを読み出せるようにする。
- Flex用のAMFGatewayとFlash用AMFGateway(OpenAMF,AMFPHP..)の違いを探す(教えてもらう)
- AMFの実装?(AMF0->AMF3)
Creating and Extending Flex Components
http://livedocs.macromedia.com/labs/1/flex/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=Part3_CreateComps.html#wp73193
ActionScript 2.0 to ActionScript 3.0 Migration
http://livedocs.macromedia.com/labs/1/flex/langref/migration.html
Migrating a Configuration Class to AS3 - Proxyの説明があります。
http://www.communitymx.com/content/article.cfm?page=2&cid=976AD
Proxyのサンプル
http://livedocs.macromedia.com/labs/1/flex/langref/flash/util/Proxy.html#includeExamplesSummary
週末にプロジェクトを整理してS2Flexのサンプルをflex2/AS3変更して動くようにしていたのは無念だ...(゚o゚)
この記事に対するコメント