S2BlazeDSの導入
id:higayasuoさんに挑発(?)されてしまったので,人柱.
指摘歓迎.
Teeda+BlazeDSです.はじめに断わっておきますが,私は諸事情によりFlex3を使えないのでFlex2での導入記です.
まだ成功していません…orz
BlazeDSとは
まず,BlazeDSとはというところから.
Home Project for Open @ Adobe / Home / Projectsで公開されていて,要するにJavaのオブジェクトとFlexのオブジェクトを透過的に扱うための仕組み.
S2Flex2との違いは…あまりよくわからないけれど,BlazeDSはAdobe Open Sourceなので公式から出ているものであるというところがちがうのかな.
BlazeDSのインストール
さすがにTomcatやEclipseはインストールされてる前提で.
Adobe - Error PageからBinary Distributionの最新版を落としてきます.
TomcatがないならTurnkeyというオールインワンパッケージをダウンロードするといいみたい.
解凍すると
- blazeds.war
- blazed-bin-readme.htm
というファイルができます.
突っ込んでおくと,確かにインストール方法は自明だが,blazed-bin-readme.htmの中にはライセンス条項しか書いていない.READMEじゃなくてLICENCE.
インストール方法は
Home Project for Open @ Adobe / Home / Projects*1
TomcatにBlazeDSをインストールする。 » サイキョウライン
あたりを参考に.
C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps
に放り込むだけでいいです.
S2BlazeDSのサーバー側設定
ライブラリの設定
環境としては,Doltengとか全部入ってる状態を想定しています.
また,最近更新されたMaven - Maven 2.x Integration for EclipseのTycho*2をインストールしてあります.
ChuraのSuper Agile(Teeda+S2Dao)でblazedsTestというプロジェクトを作成.
で,M2EclipseとTeeda - Paradigm Shift Designを参考に,Mavenの設定をします.
…とおもったら,まだMavenで配布されてない*3ので,
S2BlazeDS - Download
から,アーカイブをs2blazeds-1.0.0-rc1.zipをダウンロードして展開.
mvn install:install-file -DgroupId=org.seasar.blazeds -DartifactId=s2blazeds \ -Dversion=1.0.0-rc1 -Dpackaging=jar -Dfile=s2blazeds-1.0.0-rc1.jar
を実行し,ローカルリポジトリにインストールした上で,pom.xmlに
<dependency> <groupId>org.seasar.blazeds</groupId> <artifactId>s2blazeds</artifactId> <version>1.0.0-rc1</version> </dependency>
と書き加えて保存します.
…さらに,Flex関係のjarもmavenリポジトリにはないようなので,ローカルでインストール.最初にダウンロードしたblazeds.warを解凍して,blazeds/WEB-INF/lib以下のflex-*をローカルリポジトリにインストール.コマンドはさっきと同じように
mvn install:install-file -DgroupId=flex \ -DartifactId=flex-messaging-common \ -Dversion=3-0-0-544 -Dpackaging=jar \ -Dfile=flex-messaging-common.jar mvn install:install-file -DgroupId=flex \ -DartifactId=flex-messaging-core \ -Dversion=3-0-0-544 -Dpackaging=jar \ -Dfile=flex-messaging-core.jar mvn install:install-file -DgroupId=flex \ -DartifactId=flex-messaging-opt \ -Dversion=3-0-0-544 -Dpackaging=jar \ -Dfile=flex-messaging-opt.jar mvn install:install-file -DgroupId=flex \ -DartifactId=flex-messaging-proxy \ -Dversion=3-0-0-544 -Dpackaging=jar \ -Dfile=flex-messaging-proxy.jar mvn install:install-file -DgroupId=flex \ -DartifactId=flex-messaging-remoting \ -Dversion=3-0-0-544 -Dpackaging=jar \ -Dfile=flex-messaging-remoting.jar
pom.xmlは
<dependency> <groupId>flex</groupId> <artifactId>flex-messaging-common</artifactId> <version>3-0-0-544</version> </dependency> <dependency> <groupId>flex</groupId> <artifactId>flex-messaging-core</artifactId> <version>3-0-0-544</version> </dependency> <dependency> <groupId>flex</groupId> <artifactId>flex-messaging-opt</artifactId> <version>3-0-0-544</version> </dependency> <dependency> <groupId>flex</groupId> <artifactId>flex-messaging-proxy</artifactId> <version>3-0-0-544</version> </dependency> <dependency> <groupId>flex</groupId> <artifactId>flex-messaging-remoting</artifactId> <version>3-0-0-544</version> </dependency>
と追記します.
あと,commons-httpclientとbackport-util-concurrentが必要なので,pom.xmlに
<dependency> <groupId>commons-httpclient</groupId> <artifactId>commons-httpclient</artifactId> <version>3.1</version> </dependency> <dependency> <groupId>backport-util-concurrent</groupId> <artifactId>backport-util-concurrent</artifactId> <version>3.0</version> </dependency>
を追記すればライブラリの設定は終わりです.
s2blazedsの設定
S2BlazeDS - Downloadのs2blazeds-server-example-1.0.0-rc1.zipをダウンロードして,src/main/webapps/WEB-INF/flexを自分のプロジェクトへコピーします.
次にweb.xmlに次の設定を書き加えます.
<context-param> <param-name>flex.class.path</param-name> <param-value>/WEB-INF/flex/hotfixes</param-value> </context-param> <!-- Http Flex Session attribute and binding listener support --> <listener> <listener-class>flex.messaging.HttpFlexSession</listener-class> </listener> <!-- MessageBroker Servlet --> <servlet> <servlet-name>MessageBrokerServlet</servlet-name> <display-name>MessageBrokerServlet</display-name> <servlet-class>flex.messaging.MessageBrokerServlet</servlet-class> <init-param> <param-name>services.configuration.file</param-name> <param-value>/WEB-INF/flex/services-config.xml</param-value> </init-param> <load-on-startup>4</load-on-startup> </servlet> <servlet-mapping> <servlet-name>MessageBrokerServlet</servlet-name> <url-pattern>/messagebroker/*</url-pattern> </servlet-mapping>
S2BlazeDSのFlex側設定.
ここでは,サンプルを利用して説明します.
…で,S2BlazeDS - Downloadで配布されているクライアントサンプルをFlex2でインポートしないでください.
インポートするとワークスペースを更新していますというメッセージが,出続けてプロジェクトを閉じることすらできなくなります.
Flex3では問題ないのだと思います.
Flex2では,まずプロジェクトの作成をクリックして
ファイル->新規->プロジェクトで,このFlexアプリケーションはどのようにデータにアクセスしますか?で「Flexデータサービス」,「Flex Builderでアプリケーションをローカルにコンパイル」を選択して次へ.
「ローカルFlexデータサービスのデフォルトの場所を使用する」のチェックを外し,コンテキスト名がblazedsTestなら,
ルートフォルダ:サーバー側プロジェクトのルート/src/webapps ルートURL:http://localhost:8080/blazedsTest/ コンテキストルート:/blazedsTest
のように設定してください.
で,ビルドパスのoutput folderはサーバー側プロジェクトのルート/src/webapps以下のアプリケーション名を設定.
で,ここまで来て,Flex側でプロジェクトを実行しようとしたら,
Unexpected attribute 'url' found in 'endpoint' from file: services-config.xml.
とか言われる.
Flex3じゃないと動かないのか・・・?*4
と,,hotfixがあるじゃないか!hotfixのくせに151MBもあるじゃないか!…アフォか.
でHotFixをあてる…これ,ほんとにマルっとコピーなんだな.差分じゃない.
これで動くだろーと思ったら,今度は
チャンネル定義 mx.messaging.channels.StreamingAMFChannel が見つかりません。
とのこと.
とりあえずこの辺でタイムリミット.
後で追記します.
DIが効いてないのかなぁ