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

Java アプリケーションの設定

App Engine Java アプリケーションでは、web.xml 配備記述子に加え、appengine-web.xml という設定ファイルを使用します。この設定ファイルを使用すると、登録済みのアプリケーション ID や最新コードのバージョン識別子を指定したり、アプリケーションの WAR 内にあるどのファイルが静的ファイル(画像など)で、どのファイルがアプリケーションで使用するリソース ファイルかを識別したりできます。これらの情報は、AppCfg コマンドでアプリケーションをアップロードする際に使用します。

appengine-web.xml について

App Engine Java アプリケーションの WAR では、appengine-web.xml という名前のファイルを WEB-INF/ ディレクトリに含める必要があります。このファイルは、ルート要素が <appengine-web-app> の XML ファイルです。静的ファイルやリソース ファイルを指定せず、アプリケーション ID とバージョン識別子のみを指定した最小限のファイルは次のようになります:

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

<application> 要素には、アプリケーションの ID を指定します。これは、アプリケーションの作成時に管理コンソールで登録したアプリケーション ID です。アプリケーションのアップロード時には、AppCfg がこのファイルからアプリケーション ID を取得します。

<version> 要素には、最新のアプリケーション コードのバージョン識別子を指定します。任意の文字列を指定できます。AppCfg は、アプリケーションのアップロード時にこのバージョン識別子に基づいて、指定された識別子で新しいバージョンのアプリケーションを作成するか(すでにアプリケーションが存在する場合は指定されたバージョンで置き換えるか)どうかを判断して App Engine に伝えます。新しいバージョンのアプリケーションは、http://version-id.latest.application-id.appspot.com のような URL を使用してテストできます(version-id と pplication-id を置換)。ユーザーに提供するアプリケーションの「デフォルト」バージョンは、管理コンソールで設定できます。

次のセクションでは、<static-files> および <resource-files> 要素について説明します。

このファイルの DTD やスキーマ仕様は、SDK の docs/ディレクトリに格納されています。

静的ファイルとリソース ファイル

多くの Web アプリケーションでは、画像、CSS スタイルシート、ブラウザ JavaScript コードなどのファイルをユーザーのブラウザに直接提供します。これらのファイルは、その内容が変化しないことから静的ファイルと呼ばれ、静的コンテンツ専用の Web サーバーを利用することで効率的に提供できます。App Engine では、静的ファイルを専用のサーバーとキャッシュから提供します。

アプリケーション コードがファイル システムを使用してアクセスできるファイルを resource files(リソース ファイル)といいます。これらのファイルは、アプリケーションとともにアプリケーション サーバーに格納されます。

WAR 内のすべてのファイルは、デフォルトでは静的ファイルとしてもリソース ファイルとしても処理できます。例外は、JSP ファイル(サーブレット クラスにコンパイルされて URL パスにマップされる)と、WEB-INF/ ディレクトリ内のファイル(静的ファイルとして提供されることはなく、常にリソース ファイルとしてアプリケーションから利用できる)です。

どのファイルを静的ファイルとして扱い、どのファイルをリソース ファイルとして扱うかは、appengine-web.xml ファイル内の要素を使用して調整できます。<static-files> 要素には、静的ファイルのリストに含める(および除外する)ファイル パスに一致するパターンを指定します。これにより、デフォルトの静的ファイル識別動作を変更できます。同様に、<resource-files> 要素を使用すると、どのファイルをリソース ファイルとして扱うかを指定できます。

パスのパターンは、ゼロ個以上の <include> および <exclude> 要素を使用して指定します。パターン内では、* でファイル名またはディレクトリ名内のゼロ個以上の文字を表し、** でパス内のゼロ個以上のディレクトリを表します。

<include> 要素は、デフォルトの状態(すべてのファイルを含める)をオーバーライドします。<exclude> 要素は、すべての <include> パターンの後に適用されます(<include> が明示的に指定されていない場合は、デフォルトの状態に適用されます)。

たとえば、WEB-INF/ 内のファイルも含め、名前が .png で終わるすべてのファイルを静的ファイルとして扱い、data/ ディレクトリとそのサブディレクトリ内のファイルは除外したい場合は、次のように指定します:

    <static-files>
        <include path="/**.png" />
        <exclude path="/data/**.png" />
    </static-files>

また、WEB-INF/ 以外のディレクトリのファイルも含め、名前が .xml で終わるすべてのファイルをリソース ファイルとして扱い、feeds/ ディレクトリとそのサブディレクトリ内のファイルは除外したい場合は、次のように指定します:

    <resource-files>
        <include path="/**.xml" />
        <exclude path="/feeds/**.xml" />
    </resource-files>

静的ファイルは、ファイルの拡張子に基づいて選択された MIME タイプで提供されます。ファイルをカスタム MIME タイプで提供するには、ファイルを静的ファイルではなくリソース ファイルにし、カスタム MIME タイプでデータを提供するサーブレットを作成します。

システム プロパティと環境変数

appengine-web.xml ファイルでは、アプリケーションの実行時に設定されるシステム プロパティや環境変数を定義できます。

    <system-properties>
        <property name="myapp.maximum-message-length" value="140" />
        <property name="myapp.notify-every-n-signups" value="1000" />
        <property name="myapp.notify-url" value="http://www.example.com/signupnotify" />
    </system-properties>

    <env-variables>
        <env-var name="DEFAULT_ENCODING" value="UTF-8" />
    </env-variables>

セキュアな URL(SSL)を有効にする

アプリケーションでセキュアな URL(SSL、たとえば https://...)を使用する場合は、アプリケーションでの SSL の使用を appengine-web.xml ファイルで有効にする必要があります。SSL を有効にするには、このファイルに <ssl-enabled> 要素を追加します:

    <ssl-enabled>true</ssl-enabled>

セキュアな URL の定義の詳細については、配備記述子: セキュアな URLをご覧ください。

セッションを有効にする

App Engine には、サーブレット セッション インターフェースによるセッションの実装が含まれています。この実装では、App Engine のデータストアと memcache を使用してセッション データを保管します。

この機能は、デフォルトでは無効になっています。有効にするには、appengine-web.xml に次の行を追加します:

    <sessions-enabled>true</sessions-enabled>

この実装により、種類が _ah_SESSION のデータストア エンティティが作成され、接頭辞 _ahs のキーで memcache が作成されます。