使用 Java 本機開發伺服器

Cloud SDK for Java 包括用於在電腦上測試應用程式的本機開發伺服器。本機開發伺服器會模擬 App Engine Java Runtime Environment 及其所有的服務,包括 Datastore。

執行開發網頁伺服器

如要瞭解如何為您的應用程式設定系統屬性和環境變數,請參閱要求的處理方式

您也可以從命令提示字元執行開發網路伺服器。要執行的指令位於 SDK 的 google-cloud-sdk/bin/ 目錄中。

Windows 指令語法:

google-cloud-sdk\bin\java_dev_appserver.cmd [options] [WAR_DIRECTORY_LOCATION]

Linux 或 macOS 指令語法:

google-cloud-sdk/bin/java_dev_appserver.sh [options] [WAR_DIRECTORY_LOCATION]

指令會使用您應用程式的 WAR 目錄位置做為引數。

停止開發伺服器

如要停止網路伺服器,請按下 Ctrl-C 鍵。

偵測應用程式執行階段環境

如要判定程式碼是在實際工作環境還是本機開發伺服器中執行,請檢查 SystemProperty.environment.value() 方法的值。例如:

if (SystemProperty.environment.value() == SystemProperty.Environment.Value.Production) {
   // Production
 } else {
  // Local development server
  // which is: SystemProperty.Environment.Value.Development
}

使用本機 Datastore 模擬器

開發網路伺服器會使用您電腦的本機檔案 Datastore 模擬 Datastore。Datastore 的名稱是 local_db.bin,建立在 WEB-INF /appengine-generated/ 目錄的應用程式 WAR 目錄中。此檔案未隨同您的應用程式上傳。

此 Datastore 會持續存在於網路伺服器叫用之間,因此您下次執行網路伺服器時,您儲存的資料仍能保持可用。如要清除 Datastore 的內容,請將伺服器關機,然後刪除這個檔案。

Datastore 索引設定所述,開發伺服器會根據應用程式在測試期間執行的查詢,產生應用程式所需的 Datastore 索引設定。如此會產生名稱為 datastore-indexes-auto.xml 的檔案,位於 WAR 的 目錄 WEB-INF/appengine-generated/。如要停用自動索引設定,請使用適用於 <datastore-indexes> 元素的 autoGenerate="false" 屬性,在 WEB-INF/ 目錄建立或編輯 datastore-indexes.xml 檔案。如需進一步瞭解,請參閱 Datastore 索引設定

瀏覽開發服務器中的 Datastore

如何使用開發網路伺服器瀏覽本機 Datastore:

  1. 如前所述啟動開發伺服器。
  2. 前往開發控制台
  3. 按一下左側導覽欄中的 [Datastore Viewer] (Datastore 檢視器),以檢視您的本機 Datastore 內容。

Cloud Datastore 一致性模型

根據預設,本機 Datastore 經過設定,將沒有立即顯示在全域查詢的 Datastore 寫入百分比設為 10%。

如要調整此一致性程度,請設定 datastore.default_high_rep_job_policy_unapplied_job_pct 系統屬性值,此值應與您希望應用程式呈現的最終一致性相互對應。

-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20

如您使用命令提示字元 java_dev_appserver.sh 設定此屬性,則必須使用 --jvm_flag=... 設定屬性。

google_cloud_sdk/bin/java-dev_appserver.sh  --jvm_flag=-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20

datastore.default_high_rep_job_policy_unapplied_job_pct 的有效範圍介於 0 和 100 之間。如果您使用超出此範圍的數字,將會收到錯誤訊息。

如果您使用的是 Maven,可以使用 jvmFlags 傳送此標記做為 appengine:devserver 引數:

<jvmFlags>
  <jvmFlag>-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20</jvmFlag>
</jvmFlags>

指定自動 ID 分配政策

您可以設定本機 Datastore 如何指派自動實體 ID。開發伺服器支援以下的自動 ID 分配政策:

sequential
從連續的整數序列指派 ID。
scattered
從大致平均分佈且不重複的整數序列指派 ID。

本機 Datastore 中的預設政策是 scattered

如要指定自動 ID 政策,請將 datastore.auto_id_allocation_policy 系統屬性設定為 sequentialscattered

-Ddatastore.auto_id_allocation_policy=scattered

如要透過傳送至 dev_appserver 巨集的標記設定此系統屬性:

java_dev_appserver --jvm_flag=-Ddatastore.auto_id_allocation_policy=scattered

模擬使用者帳戶

開發網頁伺服器使用自己的登入與登出網頁,即可模擬「Google 帳戶」。在開發伺服器執行時,產生登入和登出網址的方法會回傳本機伺服器上的 /_ah/login/_ah/logout 網址。

開發登入頁面提供表單,可讓您輸入電子郵件地址。工作階段會使用您輸入的任何電子郵件地址做為現用使用者。

若要讓應用程式將登入的使用者視為管理員,請勾選表單上的 [以管理員身分登入] 核取方塊。

使用網址擷取

當應用程式使用 URL Fetch API 發出 HTTP 要求時,開發網頁伺服器會直接從您的電腦發出要求。如果您使用 Proxy 伺服器存取網站,應用程式的行為可能會與應用程式在 App Engine 上執行時的行為不同。

開發控制台

開發網頁伺服器包括控制台網路應用程式。您可以使用控制台瀏覽本機 Datastore。

若要存取控制台,請前往您伺服器的網址 /_ah/adminhttp://localhost:8080/_ah/admin

指令列引數

開發伺服器指令支援以下的指令列引數:

--address=...

伺服器使用的主機位址。需設定此位址才能使用網路上的其他電腦存取開發伺服器。若將位址設為 0.0.0.0,就能同時進行 localhost 存取和主機名稱存取。預設:localhost

--default_gcs_bucket=...

設定預設的 Google Cloud Storage 值區名稱。

--disable_update_check

若有指定,開發伺服器並不會聯絡 App Engine 以檢查是否有可用的新版本 SDK。根據預設,伺服器會在啟動時檢查新版本,並且在有可用的新版本時顯示訊息。

--generated_dir=...

設定建立產生檔案所在的目錄。

--help

顯示實用訊息後退出。

--jvm_flag=...

傳送特定標記為 JVM 引數。可以重複執行以提供多個標記。

--port=...

伺服器使用的連接埠號碼,預設值為 8080

--sdk_root=...

Cloud SDK 的路徑 (如與工具位置不同)。

--server=...

用於判定最新 SDK 版本的伺服器。

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

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

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