お気に入り | 日本語 | ログイン

プロジェクトの作成

App Engine Java アプリケーションは、Java サーブレット標準を使用して Web サーバー環境と対話します。アプリケーションのファイル(コンパイル済みのクラス、JAR、静的ファイル、設定ファイルなど)は、Java Web アプリケーション用の WAR 標準に従ってディレクトリ構造に整理されます。Web サーブレットの開発および WAR ディレクトリの構成は、任意の開発プロセスに従って進めることができます(WAR アーカイブ ファイルは、App Engine SDK ではまだサポートされていません)。

プロジェクト ディレクトリ

このチュートリアルでは、すべてのプロジェクト ファイルを Guestbook/ という名前のディレクトリに格納します。サブディレクトリ src/ には Java ソース コードを格納し、war/ には WAR 形式で整理されたアプリケーション全体を格納します。App Engine のビルド プロセスは Java ソース ファイルをコンパイルし、コンパイル済みのクラスを war/ 内の適切な場所に格納します。

完成後のプロジェクト ディレクトリは次のようになります:

Guestbook/
  src/
    ...Java source code...
    META-INF/
      ...other configuration...
  war/
    ...JSPs, images, data files...
    WEB-INF/
      ...app configuration...
      lib/
        ...JARs for libraries...
      classes/
        ...compiled classes...

Eclipse を使用している場合は、ツールバーの ([新規 Web アプリケーション プロジェクト(The New Web Application Project)] ボタン)をクリックして新しいプロジェクトを作成します。[プロジェクト名(Project name)] に Guestbook、[パッケージ(Package)] に guestbook と入力します。[Google Web ツールキットを使用する(Use Google Web Toolkit)] をオフにし、[Google App Engine を使用する(Use Google App Engine)] がオンになっていることを確認します。詳しくは、Google Plugin for Eclipse の使用をご覧ください。[完了] をクリックすると、上で説明したディレクトリ構造とファイルが作成されます。

Eclipse を使用していない場合は、これと同様のディレクトリ構造を作成します。このセクションでの各ファイルの説明を読み、所定の場所に指定の名前でファイルを作成してください。

SDK に含まれている新規プロジェクト テンプレートをコピーすることもできます。テンプレートは、appengine-java-sdk/demos/new_project_template/ ディレクトリに格納されています。

サーブレット クラス

App Engine Java アプリケーションは、Java サーブレット標準を使用して Web サーバーと対話します。HTTP サーブレットとは、Web リクエストを処理して応答できるアプリケーション クラスです。このクラスは、javax.servlet.GenericServlet クラスまたは javax.servlet.http.HttpServlet クラスを拡張します。

このチュートリアルのゲストブック プロジェクトも、最初はメッセージを表示するシンプルな単一サーブレット クラスから作成します。

Eclipse プラグインを使用していない場合は、src/guestbook/ というパスのディレクトリを作成し、下に示すサーブレット クラス ファイルを作成します。

src/guestbook/ ディレクトリの GuestbookServlet.java というファイルのコンテンツは次のようになっています:

package guestbook;

import java.io.IOException;
import javax.servlet.http.*;

public class GuestbookServlet extends HttpServlet {
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws IOException {
        resp.setContentType("text/plain");
        resp.getWriter().println("Hello, world");
    }
}

web.xml ファイル

Web サーバーは、リクエストを受信すると、「Web アプリケーション配備記述子」と呼ばれる設定ファイルを使用して、呼び出すサーブレット クラスを特定します。この設定ファイルの名前は web.xml で、WAR 内の war/WEB-INF/ ディレクトリに格納されています。WEB-INF/web.xml は、サーブレット仕様の一部です。

war/WEB-INF/ ディレクトリの web.xml というファイルのコンテンツは次のようになっています:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5">
    <servlet>
        <servlet-name>guestbook</servlet-name>
        <servlet-class>guestbook.GuestbookServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>guestbook</servlet-name>
        <url-pattern>/guestbook</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
</web-app>

この web.xml では、guestbook という名前のサーブレットを宣言し、それを URL パス /guestbook にマップしています。また、ユーザーがまだサーブレットにマップされていない URL パスをフェッチし、URL がプリケーションの WAR 内に存在するディレクトリ パスを参照している場合は、サーバーがそのディレクトリ内の index.html というファイルを探し、見つかったらそれを利用可能にする必要があることも記述されています。

appengine-web.xml ファイル

App Engine では、アプリケーションの配備や実行の方法を指定するため、もう 1 つ設定ファイルが必要になります。このファイルの名前は appengine-web.xml で、web.xml と同じ WEB-INF/ ディレクトリに格納されています。このファイルに含まれているのは、アプリケーションの登録 ID(Eclipse では、空の ID が作成され、後で値を指定します)、アプリケーションのバージョン番号、および静的ファイル(画像、CSS など)やリソース ファイル(JSP などのアプリケーション データ)として処理するファイルのリストです。

war/WEB-INF/ ディレクトリの appengine-web.xml というファイルのコンテンツは次のようになっています:

<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
    <application></application>
    <version>1</version>
</appengine-web-app>

appengine-web.xml は App Engine に固有のファイルで、サーブレット標準には含まれていません。このファイルの形式を記述する XML スキーマ ファイルは、SDK 内の appengine-java-sdk/docs/ ディレクトリに格納されています。このファイルに関する詳しい情報は、アプリケーションの設定をご覧ください。

プロジェクトの実行

App Engine SDK には、作成したアプリケーションのテストに使用できる Web サーバー アプリケーションが含まれています。このサーバーは、サンドボックス制限、データストアなど、App Engine の環境やサービスをシミュレートします。

Eclipse を使用している場合は、Eclipse デバッガ内から開発サーバーを起動できます。[実行] メニューから、[デバッグ] > [Web アプリケーション] をクリックします(このメニュー オプションが表示されない場合は、メニューから [ウィンドウ] > [パースペクティブのリセット] を選択し、[OK] をクリックしてからもう一度 [実行] メニューをクリックしてください)。 デバッグ構成の作成方法については、Google Plugin for Eclipse の使用をご覧ください。

Eclipse を使用していない場合は、Apache Ant の使用を参考に、プロジェクトをビルドして開発サーバーを起動するためのスクリプトを作成してください。このビルド スクリプトでサーバーを起動するには、コマンドとして ant runserver と入力します。サーバーを停止するには、Ctrl+C を押します。

アプリケーションのテスト

サーバーを起動したら、ブラウザで次の URL にアクセスします。

サーバーによってサーブレットが呼び出され、ブラウザにメッセージが表示されます。

次のステップ

これで、App Engine アプリケーションが完成しました。この簡単なグリーティング メッセージを配備して、世界中のユーザーと共有することができます。

このアプリケーションを実行すると、すべてのユーザーに汎用のグリーティング メッセージが表示されます。次は、Google アカウントを利用して、訪問者ごとにカスタマイズされたグリーティング メッセージを表示できるようにしましょう。

ユーザー サービスの使用に進みます。