2010年4月16日金曜日

作業ログ:BlazeDS4調査

以下、BlazeDS4調査の作業ログです。

これまで

BlazeDS系について、今まで以下のような作業を行ってきました。

ここまでわかってきたことは、以下のようなことです。
  • BlazeDS3 を GAE 上で運用するにはいろいろと痛い問題がある。
  • 独自に解決したとしても BLZ-444 により、BlazeDS 3系 にバックポートできる可能性はほぼ無い。
  • 逆に、BLZ-444 により、次世代以降の BlazeDS にて GAE をサポートする意思はあると考えられる。

上記からの考察。
  • BlazeDS3系と今後付き合うメリットは低い。
  • BlazeDS4系は未知数だが、BlazeDS3だって現状でソースをほとんど読んでるんだから、大差ない。
  • BlazeDS4系は、開発中なだけに、こちらでの要望が通る可能性が高い。
  • BlazeDS4系は、データ中心開発系でにぎわい始めてきているので、タイミング的にも悪くない。 

結論
  • 将来的な選択肢は、BlazeDS4で行くか、BlazeDSを捨てるか。
  • BlazeDS4系は、BLZ-444 があることと、現在開発中なのでこちらの意見が通りやすいという点から、これに賭けてみることにする。

BlazeDS4系調査

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 Wizardsflex-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の再インストールで解決。
これでやっと、BlazeDS4のGAE対応作業の前準備ができました。

    0 件のコメント:

    コメントを投稿