FDS2には、Flexクライアントから呼び出されるJavaクラスをカスタマイズする仕組みがあります。
既にいくつか例がでていて、EJB3やSpring Frameworkとの連携例が公開されています。
sato-shiさんのエントリーで
Seasar2に繋がるのも欲しいっすよね。すでにありましたっけ・・・?
とあったり、FxUG(flex user group)の第六回Flex2勉強会でやっぱFDS2だよね?といってFDS2用のAdapterを宣言したこともあったので、作ってみました。
勉強会の時には、Factoryの仕組みを知らなかったのでAdapterといっていました。
でも現在リリースされているFDS2はAdapterまで作らなくてもFactoryだけを作れば呼び出すことはできるようになりそうです。
Factoryを作るといっても、S2Flex2のコンポーネントを呼び出すだけです。
public Object lookup(FactoryInstance factoryInstance) {
String serviceName = factoryInstance.getSource();
final Object service = remotingServiceLocator.getService(serviceName);
return service;
}
作ったなんていえないレベルだったり..(-_-;)
S2ContainerよりRemotingServiceLocatorを取得してService名を指定した上で呼び出すことで
- コンポーネントの走査
- RemotingServiceの有無チェック
などはRemotingServiceLocatorがやってくれます。
ですので、FactoryではService名をキーにして呼び出すだけでできました。
このFactoryを作成したときには、s2flex2がrc-1-SNAPSHOTの頃でした。
その頃にFDS2でflex2_exampleが動作するように変更したものをテストとして作成しました。
近いうちにs2flex2とあわせてAkabanaより、リリースしていこうと思います。
#livedocsにあるFactoryの説明(日/英)
ファクトリメカニズムの使用
http://livedocs.macromedia.com/flex/2_jp/docs/00001122.html
Using the factory mechanism
http://livedocs.macromedia.com/flex/2/docs/00001122.html
■既に公開されている、Factoryを使った例
#EJB3を呼び出すFactory
EJB and Flex Integration, V1.0
http://weblogs.macromedia.com/pmartin/archives/2006/08/ejb_and_flex_in.cfm#more
#ダウンロード先
http://www.adobe.com/cfusion/exchange/index.cfm#view=sn611&viewName=Flex%20Extension&loc=en_us&authorid=73948009&page=0&scrollPos=0&subcatid=0&snid=sn611&itemnumber=0&extid=1035886&catid=0
#その日本語解説
EJBとFlex連携
http://d.hatena.ne.jp/sato-shi/20060815/p3
#Springframeworkで登録されたコンポーネントを呼び出すFactory
Spring と FDS を繋ぐ
http://d.hatena.ne.jp/sato-shi/20060730/p1
#download先はこちら
SpringFactory for Flex Data Services
http://www.adobe.com/cfusion/exchange/index.cfm#view=sn611&viewName=Flex%20Extension&loc=en_us&authorid=70170511&page=0&scrollPos=0&subcatid=0&snid=sn611&itemnumber=0&extid=1035406&catid=0
http://weblogs.macromedia.com/flexteam/archives/2006/07/springfactory_f.cfm
Flex Data Servicesのフォーラム
http://www.adobe.com/cfusion/webforums/forum/messageview.cfm?forumid=60&catid=583&threadid=1169760&enterthread=y#4190415
この記事に対するコメント