App Engine Java 8 執行階段常見問題

以下問題適用於 App Engine Java 8 標準執行階段。

Java 7 和 Java 8 標準執行階段之間有哪些變更?

一般而言,Java 7 執行階段中提供的所有功能應該也會在 Java 8 執行階段中提供。

如果應用程式的程式碼視 Java 安全管理員是否存在而定,或者如果 Java 7 安全沙箱發佈了某些類別載入限制,那麼您的應用程式可能會有不同的行為。在處理客戶的要求之前,請務必使用 Java 8 執行階段測試您的應用程式。

我是否可以將 Kotlin 與 Java 8 執行階段搭配使用?

可以。請查看我們在 GitHub 存放區中的 Kotlin 範例

我是否可以將 IntelliJ IDEA Community Edition 與 App Engine 搭配使用?

可以。請使用內建的 Maven 整合功能。

您也可以使用 IntelliJ Ultimate Edition,它可為您提供更多網路應用程式開發功能,並且已和 App Engine 部署程序更緊密地整合。

App Engine Cloud Endpoints v1.0 是否可以在 Java 8 執行階段中運作?

不可以。您必須遷移至 Cloud Endpoints Frameworks 2.0 版

為什麼我會在重新封裝的類別收到 java.lang.NoClassDefFoundError?

Java 8 執行階段中已不再提供重新封裝的內部類別 (例如 com/google/appengine/repackaged/com/google/common/collect/ImmutableList),即使在舊版 App Engine API JAR 中定義了這些類別。

如果您需要在 Java 8 應用程式中使用重新封裝的類別,請在 appengine-web.xml 中將 appengine.api.legacy.repackaging 設為 true。例如:

<system-properties>
  <property name="appengine.api.legacy.repackaging" value="true">
</system-properties>

建議您使用非重新封裝的公用類別取代這些類別。

我是否可以在 Java 7 和 Java 8 之間進行流量拆分?

可以。每個服務/模組版本可以使用不同的執行階段版本,而且支援流量拆分。

當執行個體未收到要求時,會如何處理 Java 8 執行緒?

使用 App Engine API 建立的執行緒將會繼續像以前一樣運作。

自動調整資源配置 手動調整資源配置 基本資源配置
執行個體因沒有任何要求而終止。 執行個體在最後一個要求之後終止 (預設值:5 分鐘) 永久執行。

App Engine Java 8 執行階段中支援哪些中繼資料伺服器功能?

App Engine Java 8 執行階段支援以下中繼資料伺服器網址:

/computeMetadata/v1/project/numeric-project-id (pending)
/computeMetadata/v1/project/project-id
/computeMetadata/v1/instance/zone
/computeMetadata/v1/instance/service-accounts/default/aliases
/computeMetadata/v1/instance/service-accounts/default/email
/computeMetadata/v1/instance/service-accounts/default/scopes
/computeMetadata/v1/instance/service-accounts/default/token
/computeMetadata/v1/instance/service-accounts/{account}/aliases
/computeMetadata/v1/instance/service-accounts/{account}/email
/computeMetadata/v1/instance/service-accounts/{account}/scopes
/computeMetadata/v1/instance/service-accounts/{account}/token
/computeMetadata/v1beta1/project/numeric-project-id  (pending)
/computeMetadata/v1beta1/project/project-id
/computeMetadata/v1beta1/instance/zone
/computeMetadata/v1beta1/instance/service-accounts/default/aliases
/computeMetadata/v1beta1/instance/service-accounts/default/email
/computeMetadata/v1beta1/instance/service-accounts/default/scopes
/computeMetadata/v1beta1/instance/service-accounts/default/token
/computeMetadata/v1beta1/instance/service-accounts/{account}/aliases
/computeMetadata/v1beta1/instance/service-accounts/{account}/email
/computeMetadata/v1beta1/instance/service-accounts/{account}/scopes
/computeMetadata/v1beta1/instance/service-accounts/{account}/token

為什麼我的要求會當機?

如果您是針對要求而建立執行緒集區,則必須確保在目前的要求終止之前將其明確關閉。

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Java 適用的 App Engine 標準環境