構成ファイル

サービスを使用する App Engine アプリケーションは、Java Enterprise Archive(EAR)が展開されたディレクトリ構造になっています。最上位の EAR ディレクトリには 1 つの META-INF サブディレクトリと、アプリのサービスごとに個別のディレクトリが含まれます。EAR は Java 7 ランタイムのみでサポートされ、Java 8 ランタイムではサポートされません。

サービス ディレクトリは、Java Web Application Archive(WAR)が展開された構造になっています。各 WAR ディレクトリの名前は通常、そこで定義するサービスと同じ名前にしますが、必ずしもそうする必要はありません。Java EE は WAR ファイルをサポートしていますが、サービス構成では展開された WAR ディレクトリのみを使用します。App Engine Maven プラグインには、スケルトン EAR 構造の作成に使用できるアーキタイプが含まれています。

EAR ディレクトリの階層グラフ

META-INF ディレクトリには appengine-application.xmlapplication.xml の 2 つの構成ファイルがあります。appengine-application.xml ファイルには、アプリをデプロイするときに App Engine ツールで使用される一般的な情報が含まれています。application.xml ファイルには、アプリケーションを構成するサービスとその WAR ディレクトリのリストが宣言されています。各サービスの WAR ディレクトリには appengine-web.xmlweb.xml の 2 つの構成ファイルがあります。

WAR ディレクトリ ファイル appengine-web.xml にはサービスの構成が定義されています。サービスごとに独自のファイルがあり、特定のサービスまたはバージョンのスケーリング タイプとインスタンス クラスが定義されています。指定したスケーリング タイプに応じて、異なるスケーリング パラメータが使用されます。スケーリングを指定していない場合は、デフォルトで自動スケーリングになります。

どの appengine-web.xml ファイルにも <application> タグが含まれている必要がありますが、このタグで指定した名前は無視されます。アプリケーションの名前は appengine-application.xml ファイルの <application> タグから取得されます。

各サービスには、サーバー効率を高めるために URL リクエストを特定の Java サーブレットにマッピングして静的ファイルを識別する設定を指定することもできます。web.xml ファイルと appengine-web.xml ファイルに含まれるこれらの設定については、web.xml デプロイ記述子appengine-web.xml リファレンスのセクションをご覧ください。

デフォルト サービス

すべてのアプリケーションにはデフォルト サービスが 1 つあります。デフォルト サービスは、appengine-web.xml ファイルの設定 <service>default</service> を使用して定義できますが、必ずしも定義する必要はありません。デフォルト サービスには、サービスに関連するすべての構成パラメータが適用されます。

以下の例に示すように、EAR ディレクトリの META-INF/application.xml ファイルにはデフォルト サービスを必ず最初に記述してください。

オプションの構成ファイル

以下の構成ファイルを使うと、アプリのすべてのサービスに適用されるオプション機能を制御できます。

  • dispatch.xml
  • queue.xml
  • datastore-indexes.xml
  • cron.xml
  • dos.xml

どのファイルを使用する場合でも、デフォルト サービスの WEB-INF ディレクトリに配置してください。

ウェブ リクエストを処理するデフォルト サービスとバックエンド処理用の別のサービス(my-service)の 2 つのサービスがあるアプリケーションの EAR ディレクトリ構造に、さまざまなファイルを構成する例を示します。

最上位の EAR ディレクトリが「my-application」であれば、ファイル my-application/META-INF/appengine-application.xml を次のように定義します。

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<appengine-application xmlns="http://appengine.google.com/ns/1.0">
  <application>my-application</application>
</appengine-application>

2 つのサービス my-application/defaultmy-application/my-service 用の WAR ディレクトリを作成します。

ここで各 WAR に、サービスのパラメータを指定する appengine-web.xml ファイルを作成します。このファイルにはサービスのバージョン名を含める必要があります。デフォルト サービスを定義するには、<service>default</service> パラメータを明示的に記述するか、このパラメータをファイルに記述しないようにします。以下に、デフォルト サービスを定義した my-application/default/WEB-INF/appengine-web.xml ファイルを示します。

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <application>my-application</application>
  <module>default</module>
  <version>uno</version>
  <threadsafe>true</threadsafe>
</appengine-web-app>

バックグラウンド リクエストを処理するサービスを定義した my-application/my-service/WEB-INF/appengine-web.xml ファイルは次のとおりです。

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <application>my-application</application>
  <module>my-service</module>
  <version>uno</version>
  <threadsafe>true</threadsafe>
  <manual-scaling>
    <instances>5</instances>
  </manual-scaling>
</appengine-web-app>

最後に、サービスを列挙した my-application/META-INF/application.xml ファイルを定義します。デフォルト サービスは最初に記述する必要があるので注意してください。

<?xml version="1.0"
encoding="UTF-8"?>

<application
  xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/application_5.xsd"
  version="5">

  <description>GAE Java SuperFun app</description>
  <display-name>SuperFun</display-name>

  <!-- Services -->
  <!-- The default service should be listed first -->
  <module>
    <web>
      <web-uri>default</web-uri>
      <context-root>default</context-root>
    </web>
  </module>
  <module>
    <web>
      <web-uri>my-service</web-uri>
      <context-root>my-service</context-root>
    </web>
  </module>

</application>

App Engine では <context-root> 要素が無視されるため、サービスをアドレス指定する際に HTTP クライアントでこの要素を URL パスの前に追加する必要はありません。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Java の App Engine スタンダード環境