では、Spring BlazeDS Integrationを利用して、FlashからSpring管理下のビーンを呼び出してみる。開発に利用したバージョンは次の通りだ。
- Spring 2.5.6
- Spring BlazeDS Integration 1.0.3
- BlazeDS 3.2
- Flex Builder 3/AS3
なお、本企画は概説ということなので、以下では重要な部分のみ説明する。詳細についてはこちらからプロジェクトフォルダをダウンロードしてコードを確認してほしい。Eclipse + Maven2の環境で動作する。
実装のポイント
まず、機能全体を見てみよう。このアプリケーションは簡易的なチャットアプリケーションで、1.メッセージの入力しサーバに送信する、2.サーバで管理された全メッセージを取得する、という機能を提供する。
最初に、Flex側でサーバサイドのリモートオブジェクトを定義する。
simplemessage.mxmlの抜粋
<mx:RemoteObject id="srv" destination="simplemessage">
<mx:method name="findAll" result="doFindAll(event)" />
<mx:method name="addMessage" result="doAddMessage(event)" />
</mx:RemoteObject>
mxmlファイル内の要素
次にサーバ側の定義を行う。まず、サーブレットはBlazeDSが提供するMessageBrokerServletではなく、SpringのDispatcherServletに変更する。
web.xml抜粋
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/messagebroker/*</url-pattern>
</servlet-mapping>
次にSpring側の定義は、次のようになる。
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:flex="http://www.springframework.org/schema/flex"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/flex http://www.springframework.org/schema/flex/spring-flex-1.0.xsd"
default-lazy-init="false">
<flex:message-broker/>
<bean id="simplemessage" class="jp.co.gxp.sample.blazeds.simple.SimpleMessageServiceImpl">
<flex:remoting-destination />
</bean>
</beans>
Spring BlazeDS Integrationでは名前空間flexが提供されているため、要素
採用には十分な検討も必要
このように便利なSpring BlazeDS Integrationだが、実案件への適用に当たっては懸念もある。Flash関連の技術は、過去から仕様が短期間にころころ変わるという問題があり、企業システムへの採用については運用保守性などの観点から十分に検討することをお勧めする。具体的にはAS3からAS4のジャンプは気になるところだ。また、製品サポートが一般的に企業システムで要求される期間に比べて短く設定されることが多い。さらに昨今ではHTML5の広がりに合わせてFlash不要論まで飛び出しており、RIA関連の動向は予断を許さない。
とはいえ、こうした問題を勘案しても現在のRIA開発であればFlexやAIRが第一候補になるだろう。さらにSpring BlazeDS Integrationを利用すれば既存のSpring資産が活用できる。
サンプルコード: springblazeds.zip
執筆者紹介
鈴木 雄介(SUZUKI Yusuke) - グロースエクスパートナーズ
ビジネスプラットフォーム事業ゼネラルマネージャー/チーフアーキテクト
企業システムのアーキテクチャ設計、開発コンサルティング、自社サービス開発に従事するエンジニア。共著書に『拡張する空間 建築家とITアーキテクトがつくるもの』(発行: コム・ブレイン)、監修書に『ソフトウェアアーキテクトが知るべき97のこと』(発行: オライリージャパン)などがある。
ブログはアークランプ。ツィッターはhttp://twitter.com/yusuke_arclamp