Java 用 Remote API

Java SDK には Remote API というライブラリが含まれており、これを使用することで、いずれの Java アプリケーションからも App Engine サービスに透過的にアクセスできます。たとえば、Remote API を使用して、ローカルマシンで実行しているアプリから本番環境のデータストアにアクセスすることが可能です。また、Remote API を使用すると、特定の App Engine アプリのデータストアに別の App Engine アプリからアクセスすることもできます。

サーバーに Remote API を設定する

Remote API のサーバー コンポーネントは、Java 用の App Engine ランタイムに含まれる Java サーブレットです。このサーブレットは、Remote API クライアントからのリクエストを受信して適切なバックエンド サービスにディスパッチし、サービス呼び出しの結果をクライアントに返します。Remote API サーブレットをインストールするには、web.xml に次の内容を追加します。

<servlet>
  <display-name>Remote API Servlet</display-name>
  <servlet-name>RemoteApiServlet</servlet-name>
  <servlet-class>com.google.apphosting.utils.remoteapi.RemoteApiServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>RemoteApiServlet</servlet-name>
  <url-pattern>/remote_api</url-pattern>
</servlet-mapping>

認証済みユーザーがいない場合、または認証済みユーザーがアプリケーションの管理者でない場合、サーブレットはエラーを返します。そのため、セキュリティの追加構成は必要ありません。上記の設定でアプリをデプロイした後は、Remote API クライアントをインストールしたあらゆるアプリがそのサービスを使用できます。これには、Python Remote API を使用している Python クライアントも含まれます。

スタンドアロン クライアントに Remote API を設定する

Remote API のクライアント コンポーネントを Java アプリケーションで使用できるように設定するには、まずクラスパスに ${SDK_ROOT}/lib/impl/appengine-api.jar${SDK_ROOT}/lib/appengine-remote-api.jar を追加します。次に、コードで Remote API を設定してインストールします。

import com.google.appengine.tools.remoteapi.RemoteApiInstaller;
import com.google.appengine.tools.remoteapi.RemoteApiOptions;

// ...
RemoteApiOptions options = new RemoteApiOptions()
    .server("your_app_id.appspot.com", 443)
    .useApplicationDefaultCredential();

RemoteApiInstaller installer = new RemoteApiInstaller();
installer.install(options);
// ... all API calls executed remotely
installer.uninstall();

Remote API クライアントは、OAuth 2.0 を使用するアプリケーションのデフォルト認証情報に依存します。

認証情報を取得するには、次のコマンドを実行します。

gcloud auth application-default login

開発用サーバーでローカルに実行されている App Engine アプリにも、同じように簡単に接続できます。

RemoteApiOptions options = new RemoteApiOptions()
    .server("localhost", 8888) // server name must equal "localhost"
    .useDevelopmentServerCredential();

実行時にエンティティをデータストアに挿入する Java アプリケーション全体を次に示します。

public class RemoteApiExample {

  public static void main(String[] args) throws IOException {
    String serverString = args[0];
    RemoteApiOptions options;
    if (serverString.equals("localhost")) {
      options = new RemoteApiOptions().server(serverString,
        8080).useDevelopmentServerCredential();
    } else {
      options = new RemoteApiOptions().server(serverString,
        443).useApplicationDefaultCredential();
    }
    RemoteApiInstaller installer = new RemoteApiInstaller();
    installer.install(options);
    try {
      DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
      System.out.println("Key of new entity is " + ds.put(new Entity("Hello Remote API!")));
    } finally {
      installer.uninstall();
    }
  }
}

App Engine クライアントに Remote API を設定する

Remote API を使用すると、特定の App Engine アプリケーションのサービスに別の App Engine アプリケーションからアクセスすることもできます。そのためには、スタンドアロン Java クライアントの場合と同様に、${SDK_ROOT}/lib/appengine-remote-api.jarWEB-INF/lib ディレクトリに追加してから、クライアント App Engine アプリで Remote API を設定してインストールする必要があります。

RemoteApiInstaller は、インストールを実行するスレッドのみで Remote API をインストールするため、このクラスのインスタンスを複数のスレッド間で共有しないように注意してください。

Maven で Remote API を使用する

Maven プロジェクトで Remote API 機能を使用するには、プロジェクトの pom.xml ファイルに次の依存性を追加します。

<dependency>
  <groupId>com.google.appengine</groupId>
  <artifactId>appengine-remote-api</artifactId>
  <version>1.9.64</version>
</dependency>
<dependency>
  <groupId>com.google.appengine</groupId>
  <artifactId>appengine-api-1.0-sdk</artifactId>
  <version>1.9.64</version>
</dependency>
このページは役立ちましたか?評価をお願いいたします。

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

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