これまで
BlazeDS系について、今まで以下のような作業を行ってきました。
- GAE/J + BlazeDS + Flash Builder 環境の構築
- GAE/J + BlazeDS 環境の Security 設定
- GAE/J + BlazeDS 環境の DuplicateSessionDetected 問題
- GAE/J + BlazeDS3 環境の HttpSessionListener 問題
ここまでわかってきたことは、以下のようなことです。
- BlazeDS3 を GAE 上で運用するにはいろいろと痛い問題がある。
- 独自に解決したとしても BLZ-444 により、BlazeDS 3系 にバックポートできる可能性はほぼ無い。
- 逆に、BLZ-444 により、次世代以降の BlazeDS にて GAE をサポートする意思はあると考えられる。
上記からの考察。
- BlazeDS3系と今後付き合うメリットは低い。
- BlazeDS4系は未知数だが、BlazeDS3だって現状でソースをほとんど読んでるんだから、大差ない。
- BlazeDS4系は、開発中なだけに、こちらでの要望が通る可能性が高い。
- BlazeDS4系は、データ中心開発系でにぎわい始めてきているので、タイミング的にも悪くない。
結論
- 将来的な選択肢は、BlazeDS4で行くか、BlazeDSを捨てるか。
- BlazeDS4系は、BLZ-444 があることと、現在開発中なのでこちらの意見が通りやすいという点から、これに賭けてみることにする。
BlazeDS4系調査
- BlazeDS4系のドキュメントはここからたどれる。
- BlazeDS 4.0 Release Notes
- data-centric development features of Flash Builder 4 というのが、LCDSを用いた開発を指しているんですね。確かにこんな感じで便利だ。
- New Spring / BlazeDS Test Drive Available: Flex 4, BlazeDS 4, and Spring / BlazeDS Integration 1.0.3 も役に立ちそう。後でチェックしよう。
- BlazeDS 4.0 Installation Guide
- ぱっと見たところ、BlazeDS3とあまり変わらなそう。ということで試してみることにした。
- source tree は http://opensource.adobe.com/svn/opensource/blazeds/ から見れる。
- 基本的に、既存の3.2のプロジェクトに対して、Upgrading BlazeDS 3.2 to version 4.0 の方法を適用すればよさそうだ。
- コ ミット情報のフォーラムがあるんですね。便利だ。
BlazeDS4のコンパイル
- ソースは、http://opensource.adobe.com/svn/opensource/blazeds/trunk からチェックアウト。300MB以上あるので結構時間がかかります。
- ビルド用のツールは ant っぽいですが、どのバージョンか不明。ということで、とりあえず 1.8.0 で試してみる。
- build.xml をかるく見たところ、main というターゲットが全体的なビルドらしいので、実行してみた。見事に失敗。
[taskdef] Could not load definitions from resource net/sf/antcontrib/antcontrib.properties. It could not be found.
ということで、antcontrib 入れなきゃだめっぽい。 - http://ant-contrib.sourceforge.net/ に行って ant-contrib-1.0b2-bin.zip をダウンロードして、ant-contrib.jar を ant の lib フォルダ以下にコピーして、再チャレンジ。今度は成功。
BlazeDS 3.2 のアプリを BlazeDS 4 に対応させる
- BlazeDS3.2のころの自分のプロジェクトファイルのバックアップを取り、変更を開始。
- まず、BlazeDS3.2用に追加した jar ファイルをすべて削除。
- BlazeDS3.2のソースにパッチを当てたものもすべて削除。
- 具体的にどの jar を追加すればよいかわからないので、とりあえず設定ファイルから先に手をつける。既存の WEB-INF/flex 以下の設定ファイルの名前に.oldをつけ、新規にBlazeDS4のサンプルの定義ファイルをコピー。両者を見比べながら変更しようとおもったが、特に変更する必要はなさそうなので、もとに戻す。
- カスタム login command のコンパイルのため(AppServerLoginCommand クラス等が必要なため) flex-messaging-core.jar をコピーし、パスを通す。
- flex.messaging.LocalizedException が無いため flex-messaging-common.jar をコピーする。
- flex.messaging.services.RemotingService が無いため flex-messaging-remoting.jar をコピーする。
- これで、ローカルではあっさり動きました。
- 今度はGAE上にデプロイして試してみる。
- 見かけ上、BlazeDS 3.2 上で 起きた session の duplication 問題と、logoutをする際の Session 破棄時に HttpSessionListener が働かない問題とほぼ同様の動きをします。
- ひとまず、基本的なインストールの作業はこれで終了とします。
RDSを試してみる。
- Using Adobe LiveCycle Data Services を読んでみた。
- LiveCycle Data Services JAR files と 関連 JAR ファイルを WEB-INF/lib ディレクトリに入れる必要があるらしい。取り合えず flex-rds-server.jar が怪しいのでコピーしておく。
- WEB-INF/flex 以下の設定ファイルの設定を書くらしい。
MessageBrokerServlet の設定と session listener の設定を WEB-INF/web.xml に書くらしい。って、GAE だと session listener 使えないんだけど、、、。既にダメポな予感 (´・ω・`) - ここまで読んで、これは LiveCycle Data Services 全般の説明だということに気づく。BlazeDS3.2用のドキュメントを一通り読んでいるので、読まなくてもよさそう。ということで、data-centric development にのみフォーカスして情報を収集することにする。
- Flex 4 Sample Application using a Java Back-End, BlazeDS 4 and Flash Builder 4 Data Wizards の flex-java-testdrive.zip をダウンロードし、設定をパクることにする。
- services-config.xmlの services 要素には
<service class="flex.samples.util.DatabaseService" id="db" />
を追加。 - web.xml には次のような設定を追加。
<servlet> <display-name>RDSDispatchServlet</display-name> <servlet-name>RDSDispatchServlet</servlet-name> <servlet-class>flex.rds.server.servlet.FrontEndServlet</servlet-class> <init-param> <param-name>useAppserverSecurity</param-name> <param-value>false</param-value> </init-param> <load-on-startup>10</load-on-startup> </servlet> <servlet-mapping id="RDS_DISPATCH_MAPPING"> <servlet-name>RDSDispatchServlet</servlet-name> <url-pattern>/CFIDE/main/ide.cfm</url-pattern> </servlet-mapping>
- これでコンテナを実行。Flex Builder 4 の Connect to Data/Service のところから接続しに行ってみる。あっさりつなぎこめました。
- これでいろいろ実験しようとおもった矢先、Flush Builder 4 が突然不調に。デザインモードを開こうとおもうといきなり VM が落ちる状況に(´・ω・`)
- この件は、FlashBuilder4の再インストールで解決。
0 件のコメント:
コメントを投稿