Google App Engine Modules in Javaを試す WebToolsPlatform編

  • このエントリーをはてなブックマークに追加

ご注意

この記事は 2014年3月25日 に書かれたものです。内容が古い可能性がありますのでご注意ください。

みなさんこんにちは。

2013年の7月に、Google App Engine1.8.2がリリースされましたが、そこでModulesという新機能が実装されました。

これにより、大きなアプリケーションを複数のモジュールに分けて動作させることが可能になりました。
つまり、一つのApplicationIDのもとに複数のコンポーネントとしてのアプリケーションを動作させることができる、ということです。

また、これまではスケーリングについての設定をすることができませんでしたが(※1)、これからはAutomatic-scaling, Manual-scaling, Basic-Scalingの3つを各モジュールごとに個別に設定できるようになりました。
これにより、速いレスポンスが求められ、かつ自在にスケールしてほしい場合はautomatic-scalingモジュールとして、時間のかかる重い処理を担当する場合はManual-scalingで、というような設定が可能になります。

今回は第一弾としてこの新機能「Modules」のサンプルアプリケーションをEclipse WTPを使って配備する方法をご紹介します。

0.事前準備および環境

筆者のEclipse環境は以下のとおり。
Eclipseバージョン:Kepler Service Release 1(Build id:20130919-0819)
Eclipseプラグイン:Google Plugin for Eclipse 4.3, Web Tools Platform,Google App Engine Java SDK 1.8.5 
Javaバージョン:JDK 1.7
また、GAEに配備する際のApplicationIDは各自で取得してください。

1.モジュールの作成

はじめに、アプリケーションを構成するモジュールを作成します。
Eclipseのプロジェクト作成ウィザードより、[Web]-[Dynamic Web Project]を選択し、[Next >]を選択します。

プロジェクト名の記入を求められるので、適当な名前を入力します。
その他の設定項目について、次の画像のように設定してください。
(一部、プラグインが正しく入っていないと選択できないものがあります。)
[Finish]を選択します。

同じ要領で、module2も作成します。
作成後のEclipseの画面は次のようになりました。(画像はJavaEE パースペクティブのProject Explorer)

作成したそれぞれのプロジェクトのappengine-web.xmlを編集します。
appengine-web.xmlは、それぞれの[プロジェクト名]/WebContent/WEB-INF配下にあります。
appengine-web.xmlを開いたら、タグの内側に次のようにタグを追加します。
[xml]
<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<application></application>
<version>1</version>
<threadsafe>true</threadsafe>
<system-properties>
<property name="java.util.logging.config.file" value="WEB-INF/logging.properties" />
</system-properties>
<module>モジュール名</module> <!– ←追加 –>
</appengine-web-app>
[/xml]
このタグの値はモジュール名となり、特別な設定をしない場合、アプリケーションへのアクセス先の一部となります。
http://モジュール名.ApplicationID.appspot.com

タグの値を”default”にすると、そのモジュールがこのアプリケーションのデフォルトになります。
デフォルトモジュールにアクセスする場合、URLは次のようになります。
http://ApplicationID.appspot.com

2. EAR Application Projectの作成

次に、各モジュールをたばねるEAR Application Projectを作成します。
Eclipseのプロジェクト作成ウィザードより、[Java EE]-[Enterprise Application Project]を選択し、[Next >]を選択します。

プロジェクト名をmodules-sampleと入力し、[Next >]を選択します。

このEARアプリケーションがどのモジュールを含むかを選択する画面が表示されます。
ここで、先ほど作成したmodule1およびmodule2を選択します。
“Generate application.xml deployment descriptor”にチェックを入れます。
[Next >]を選択します。

Google App EngineのApplicationIDを入力する画面が表示されます。
前もって取得したApplicationIDを入力してください。
[Finish]を選択します。
以下のようにプロジェクトができたら、次のステップに進みましょう。

3. 動作の確認(ローカル)

サンプルプロジェクトが作成できたら、まずはローカルでの動作を確認します。
2. EAR Project Applicationの作成で作成した[sample-modules]プロジェクトを右クリックし、[Run As] – [Run on Server]を選択します。
動作させるサーバを選択するダイアログが表示されます。
次の画像のように設定して[Finish]を選択してください。

ローカル環境でのモジュールは、それぞれが別のポートで動作します。
コンソールにそれぞれのモジュールがどのポートで動作しているかが出力されるので、それぞれのURLに接続し、動作を確認してください。

4. GAEにデプロイする

ローカルでの動作を確認できたら、いよいよGAEにデプロイしてみましょう。
[sample-modules]プロジェクトを右クリックし、[Google App Engine WTP] – [Deploy Project to Remote Server]を選択します。

5. 結果の確認

特別なアドレスマッピングの設定をしていない場合、それぞれのmoduleへのアクセス先は以下の通りとなります。

http://module.appId.appspot.com

module部分には各モジュールのappengine-web.xml内のタグ内の値が入ります。
また、defaultモジュールとして指定されているモジュールにアクセスする場合、module部分のURLを省略して以下のようにアクセスできます。

http://appId.appspot.com

では、それぞれのmoduleにアクセスしてみましょう。

http://module1.appspot.com

http://module2.appspot.com

アクセスできましたか?
このように、Modules機能を使えば、一つのアプリケーション内に、モジュールとして複数のアプリケーションを動作させることが可能です。

GAEコンソールにもこの通り、複数のModuleが確認できます。

ちなみに、一つのapplicationIDに配備可能なModuleの数には制限があり、無料アプリケーションでは2つまで、有料では10まで、プレミアでは20までとなっています。
また、Modulesにはこれ以外にも様々な機能が盛り込まれています。ぜひこの新機能[Modules]を使ってみてくださいね!

  • このエントリーをはてなブックマークに追加

Google のクラウドサービスについてもっと詳しく知りたい、直接話が聞いてみたいという方のために、クラウドエースでは無料相談会を実施しております。お申し込みは下記ボタンより承っておりますので、この機会にぜひ弊社をご利用いただければと思います。

無料相談会のお申込みはこちら