Flexフレームワークで変わるRIA開発の現場
連載インデックスへ
第5回

Flexアプリを3つのパブリック・クラウドと連携する方法


AKABANA
有川 榮一
2010/9/10


【1】Amazon EC2+BlazeDS 4でクラウドFlex

 Amazon EC2(以下、EC2)は、アマゾンが提供する「Amazon Web Services」(以下、AWS)という名前で展開されるパブリック・クラウドサービスの1つです。EC2では、サーバインスタンスごとにOSを選択でき、管理者権限があるので、制限もなくアプリケーションのインストールが容易に行えます。

 本稿では、Flexと相性の良いAMFをJavaプログラミングとの通信で使えるオープンソースミドルウェア「BlazeDS」をEC2のサーバインスタンスにインストールして、そこにサンプルサービスをデプロイしてみます。

EC2の準備

 本稿では、Windowsのサーバインスタンスを利用します。起動させてWindowsに接続するところまでは、下記記事を参考にしてください。

 Windowsのサーバインスタンスに接続したら、BlazeDSとWebコンテナのTomcatを動作させるためのJREの最新版を下記よりダウンロードして、そこにインストールしておきましょう。

 次に、下記よりTomcat 6をダウンロードして、EC2のサーバインスタンスにインストールしてください。

BlazeDSの準備

 BlazeDSとは、アドビ システムズが公開したオープンソースプロジェクトです。リモーティングやメッセージング機能を持っています。詳しくは、記事「Tomcatを使ったサーバPushもできるBlazeDSとは?」を参照してください。

  このBlazeDSの最新版であるBlazeDS 4をローカルにダウンロードし、「blazeds-bin-4.0.1.17657.zip」を展開したら、「blazeds4.war」ファイルがあることを確認してください。

ローカルでの開発環境の準備

 次に、ローカルでJavaのWebサービスが開発できるように環境を整えます。本稿では、EC2+BlazeDS 4のサービスは、EclipseのJava EE版で作成します。

 まず、EC2にインストールしたTomcatと同様に、ローカルにもTomcatをインストールしてEclipseにTomcatサーバを登録します。


プロジェクト作成

 BlazeDSのWebサービスを開発するためには、まずプロジェクトを作成します。新規プロジェクト作成のウィザードから「DynamicWebProject」を選択します。

 ターゲットランタイムには、先ほど登録したTomcatを選択します。

 クラスファイルの出力先を、デプロイ用の「classes」フォルダに変更します。

 デプロイするコンテキストルートを設定します。

 [Finish]ボタンをクリックすると、プロジェクト作成ウィザードが終わり、プロジェクトが作成されます。

 次に、「WebContent」フォルダの中に、先ほどのblazeds4.warを展開します。


BlazeDSの設定

 次に、BlazeDSの設定を行います。公開するWebサービスを「WebContent\WEB-INF\flex\remoting-config.xml」ファイルに追加します。これによって、samples.echo.service.EchoServiceは、「echo」というWebサービスで公開されます。

<?xml version="1.0" encoding="UTF-8" ?>
<service id="remoting-service"
class="flex.messaging.services.RemotingService">

<adapters>
<adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/>
</adapters>

<default-channels>
<channel ref="my-amf"/>
</default-channels>

<destination id="echo">
<properties>
<source>samples.echo.service.EchoService</source>
</properties>
</destination>
</service>

サンプルJavaサービスの作成

 本稿で作るサンプルのWebサービスは、入力された文字をそのまま返すエコーサービスです。そのためのサービスクラスとそのデータを表すモデルクラスを作成します。

 EchoServiceは、Wordモデルを入力としてその値を保持したEchoモデルを返すサービスクラスです。

package samples.echo.service;
 
import samples.echo.model.Echo;
import samples.echo.model.Word;
 
public class EchoService {
 
    public Echo execute(Word word) {
        Echo echo = new Echo();
        echo.setWord(word);
        return echo;
    }
}

 Wordクラスは、Flexから入力されるデータモデルです。

package samples.echo.model;
 
public class Word {
    
    protected String text;
 
    public String getText() {
        return text;
    }
 
    public void setText(String text) {
        this.text = text;
    }
}

 Echoクラスは、Wordを保持してFlexに返すためのデータモデルです。

package samples.echo.model;
 
public class Echo {
 
    protected Word word;
    
    public Word getWord() {
        return word;
    }
 
    public void setWord(Word word) {
        this.word = word;
    }
}

ローカルで試すためにMXMLファイルを修正

 接続URLを「http://127.0.0./blazeds4sample/messaging/amf」に変更して再コンパイルして、「bin-debug」の中に生成されたファイルを「blazeds4sample/WebContent/app/」へコピーします。

 サンプルFlexアプリケーションを実行するためには、Tomactを起動してWebブラウザで「http://127.0.0.1:8080/blazeds4sample/app/EditApp.html」にアクセスします。

接続URLをクラウドにしてEC2にデプロイ

 デプロイする前に、必ず接続URLを「http://【EC2-Server】/blazeds4sample/messaging/amf」に変更してFlexアプリケーションのリリースビルドを行います。【EC2-Server】は、デプロイ先のホスト名に変更してください。そして、「bin-release」の中に生成されたファイルを「blazeds4sample/WebContent/app/」へコピーします。

 次に、サーバインスタンスのTomcatにデプロイするために、Eclipseで「blzazeds4sample」プロジェクトのwarファイルを生成します。

 ターゲットランタイムは、サーバインスタンスのWebサーバのTomcatを選択します。

 blzazeds4sample.warを生成したら、サーバインスタンスのTomcatの「webapp」フォルダに転送します。そして、サーバインスタンスのTomcatを再起動すると、デプロイ完了です。

 デプロイされたか確認するためには、Webブラウザで「http://【EC2-Server】/blazeds4sample/app/EditApp.html」にアクセスします。【EC2-Server】は、デプロイしたホスト名に変更してください。

 EclipseでEC2を利用するには、以下の記事も参考にしてみてください。

 本稿で作成したEC2用のサービスは、こちらからダウンロードできます。

1-2-3-4

 INDEX
Flexフレームワークで変わるRIA開発の現場(5)
Flexアプリを3つのパブリック・クラウドと連携する方法
  Page1
RIAとクラウドの連携は、何がメリットなのか?
XMLやJSONより速い通信フォーマット「AMF」とは
サンプルFlexアプリの概要
  Page2
【1】Amazon EC2+BlazeDS 4でクラウドFlex
  Page3
【2】Google App Engine+T2でクラウドFlex
  Page4
【3】Windows Azure+AMF MessagingでクラウドFlex
AMFは、AndroidやiPhoneなどモバイルにも有効


リッチクライアント&帳票 全記事一覧へ



HTML5 + UX フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

HTML5+UX 記事ランキング

本日 月間