Flex1.5のときは、RemoteObjectから呼ばれるJavaのクラスは直接呼ばずにSeasar2経由で呼び出していました。
FlexとSeasar2とを連携する為にS2Flexというのを使っていました。
Flex2.0に対応したS2Flex2.0?ひがさんのプロダクト計画を見ると
仕事上本当に必要になったときに計画に組み込みます。
とのことです。
ということは場合によっては半年くらいかかるかもしれません。
CFやJavaのクラスやOpenAMFなどRemoteObjectにいっぱい手を出しているので調子に乗って、"勝手にS2Flex2"をはじめてみました。
Flex2.0になってAMFの仕様がバージョン0と3の二つになりFlashPlayer8.5では3がデフォルトとして仕様されます。
OpenAMFやAMFPHPがAMFversion0のだったように、Flex1.5もまたAMFversionは0です。
S2Flexは、Flex1.xに付属しているgateway.jarに含まれているJavaAdapterを拡張してs2containerに登録されているコンポーネントを呼び出す仕組みになっています。
gateway.jarの替わりにこれまで使ったCFAdapterとS2Flexのソースを組み合わせれば、Flex2からs2Containerに登録されているコンポーネントを呼び出すS2Flex2(もどき)になるのではないかと思いチャレンジしてみました。
まずはS2flexのプロジェクトにCFAdapterが含まれているjarファイル(hf701-61119.jar)を追加してコンパイルします。
S2AdapterのsuperClassであるJavaAdapterのメソッドとパラメータが変更されているようなので、あわせて変更します。
変更前:
Flex1.5(gateway.jar)に含まれているメソッド:
public Object invokeFunction(ActionContext ctx, String name,
String methodName, List argList) throws Throwable {
}
変更後:
Flex2.0(CFAdapter)に含まれているメソッド:
public Object invoke(Message message) {
}
あとはEclipseのCtrl + T とCtrl + Spaceを駆使して推測しながら書きました。
すると..
無事足し算のサンプルを動かすことができました。\(^o^)/
ColdFusionからはじまってTomcat上のJavaクラス、そしてS2Containerにも接続することができました。
このS2Adapter Flex2版も公開したいのですが、どうすればいいか誰かに聞いてからにします。
どなたか教えてください。m(__)m
今日の欲しいもの:
- S2FlexのFlex2.0対応版
- AS3のフレームワーク
- AS3版のDIconteiner
CFAdaper
http://labs.macromedia.com/wiki/index.php/CF_Adapter
Seasar2
http://www.seasar.org
S2Flex
http://www.seasar.org/s2flex.html
Seasarのプロダクト計画 - ひがさんのblog
http://d.hatena.ne.jp/higayasuo/20060101#1136107675
Spring FrameworkとFlex1.5の連携にはSpringBeanAdapter
http://carbonfive.sourceforge.net/springadapter/
この記事に対するコメント