Java 適用的 Remote API

Java SDK 包含稱為 Remote API 的程式庫,可讓您用清楚明瞭的方式從任何 Java 應用程式存取 App Engine 服務。例如,您可以使用 Remote API,從本機電腦上執行的應用程式存取實際工作環境的資料儲存庫。您也可以使用 Remote API,從某個 App Engine 應用程式存取另一個 App Engine 應用程式的資料儲存庫。

在伺服器上設定 Remote API

Remote API 的伺服器元件是 Java Servlet,其為 Java 適用的 App Engine 執行階段的一部分。這個 Servlet 會接收來自 Remote API 用戶端的要求、將要求分派給適當的後端服務,然後將服務呼叫的結果傳回給用戶端。如要安裝 Remote API Servlet,請將以下內容新增至您的 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>

如果沒有已通過驗證的使用者,或者已通過驗證的使用者不是應用程式的管理員,則該 Servlet 會傳回錯誤,因此無需設定任何額外的安全措施。使用這些設定部署您的應用程式後,安裝了 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 應用程式的服務。您需要將 ${SDK_ROOT}/lib/appengine-remote-api.jar 新增至 WEB-INF/lib 目錄,然後在用戶端 App Engine 應用程式中設定並安裝 Remote API,就像在獨立 Java 用戶端中的操作一樣。

請注意,RemoteApiInstaller 只會在執行安裝作業的執行緒上安裝 Remote API,因此請注意不要在執行緒之間共用這個類別的執行個體。

將 Remote API 與 Maven 搭配使用

如要在 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 標準環境