Menggunakan server pengembangan lokal

Server pengembangan lokal mengemulasikan lingkungan runtime Java App Engine dan semua layanannya, termasuk Datastore.

Sebelum memulai

Karena Java 8 telah mencapai akhir dukungan, Anda tidak dapat lagi menggunakan dev_appserver.py versi terbaru untuk menjalankan aplikasi secara lokal. Untuk mendownload versi arsip devapp_server.py, ikuti langkah-langkah berikut:

  1. Dari arsip, download folder zip yang berisi server dev_appserver.py untuk runtime yang telah mencapai akhir dukungan.

  2. Ekstrak konten direktori ke sistem file lokal Anda, seperti ke direktori /home. Anda dapat menemukan dev_appserver.py di direktori google_appengine/google/appengine/tools/java/bin.

Menjalankan Server Web Pengembangan

Untuk mengetahui informasi tentang menyetel properti sistem dan variabel lingkungan untuk aplikasi Anda, baca Cara Menangani Permintaan.

Anda juga dapat menjalankan server web pengembangan dari command prompt. Perintah yang harus dijalankan ada di direktori SDK dengan jalur relatif google_appengine/google/appengine/tools/java/bin.

Sintaksis perintah Windows:

google_appengine\google\appengine\tools\java\bin\java_dev_appserver.cmd [options] [WAR_DIRECTORY_LOCATION]

Sintaksis perintah Linux atau macOS:

google_appengine/google/appengine/tools/java/bin/java_dev_appserver.sh [options] [WAR_DIRECTORY_LOCATION]

Perintah ini mengambil lokasi direktori WAR aplikasi Anda sebagai argumen.

Menghentikan server pengembangan

Untuk menghentikan server web, tekan Ctrl-C.

Mendeteksi lingkungan runtime aplikasi

Untuk menentukan apakah kode Anda berjalan di produksi atau di server pengembangan lokal, Anda dapat memeriksa nilai metode SystemProperty.environment.value(). Contoh:

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

Menggunakan emulator Datastore lokal

Server web pengembangan menyimulasikan Datastore menggunakan Datastore lokal yang didukung file di komputer Anda. Datastore diberi nama local_db.bin, dan dibuat dalam direktori WAR aplikasi Anda, di direktori WEB-INF /appengine-generated/. File ini tidak diupload bersama aplikasi Anda.

Datastore ini tetap ada di antara pemanggilan server web, sehingga data yang Anda simpan akan tetap tersedia saat Anda menjalankan server web lagi. Untuk menghapus konten Datastore, matikan server, lalu hapus file ini.

Seperti dijelaskan dalam Konfigurasi Indeks Datastore, server pengembangan dapat menghasilkan konfigurasi untuk indeks Datastore yang diperlukan oleh aplikasi Anda, yang ditentukan dari kueri yang dijalankannya saat Anda melakukan pengujian. Tindakan ini menghasilkan file bernama datastore-indexes-auto.xml dalam direktori WEB-INF/appengine-generated/ dalam WAR. Untuk menonaktifkan konfigurasi indeks otomatis, buat atau edit file datastore-indexes.xml di direktori WEB-INF/, menggunakan atribut autoGenerate="false" untuk elemen <datastore-indexes>.

Menjelajahi Datastore di server pengembangan

Untuk menjelajahi Datastore lokal Anda menggunakan server web pengembangan:

  1. Mulai server pengembangan seperti yang dijelaskan sebelumnya.
  2. Buka Konsol Pengembangan.
  3. Klik Penampil Datastore di panel navigasi kiri untuk melihat konten Datastore lokal Anda.

Model konsistensi Datastore

Secara default, Datastore lokal dikonfigurasi sehingga persentase penulisan Datastore yang tidak langsung terlihat dalam kueri global ditetapkan ke 10%.

Untuk menyesuaikan tingkat konsistensi ini, tetapkan properti sistem datastore.default_high_rep_job_policy_unapplied_job_pct dengan nilai yang sesuai dengan jumlah konsistensi akhir yang Anda inginkan untuk dilihat oleh aplikasi Anda.

-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20

Jika menetapkan properti ini menggunakan command prompt java_dev_appserver.sh, Anda harus menggunakan --jvm_flag=... untuk menetapkan properti:

google_appengine/google/appengine/tools/java/bin/java-dev_appserver.sh  --jvm_flag=-Ddatastore.default_high_rep_job_policy_unapplied_job_pct=20

Rentang yang valid untuk datastore.default_high_rep_job_policy_unapplied_job_pct adalah antara 0 dan 100. Jika Anda menggunakan angka di luar rentang ini, Anda akan menerima pesan error.

Menentukan Kebijakan Alokasi ID Otomatis

Anda dapat mengonfigurasi cara Datastore lokal menetapkan ID entity otomatis.

Kebijakan alokasi ID otomatis berikut didukung di server pengembangan:

sequential
ID ditetapkan dari urutan bilangan bulat yang berurutan.
scattered
ID ditetapkan dari urutan bilangan bulat yang tidak berulang dan kira-kira didistribusikan secara seragam.

Kebijakan default di Datastore lokal adalah scattered.

Untuk menentukan kebijakan ID otomatis, tetapkan properti sistem datastore.auto_id_allocation_policy ke sequential atau scattered.

-Ddatastore.auto_id_allocation_policy=scattered

Untuk menyetel properti sistem ini melalui flag yang diteruskan ke makro dev_appserver:

java_dev_appserver --jvm_flag=-Ddatastore.auto_id_allocation_policy=scattered

Menyimulasikan Akun Pengguna

Server web pengembangan menyimulasikan Akun Google dengan halaman login dan logoutnya sendiri. Saat berjalan di server web pengembangan, metode yang menghasilkan URL login dan logout menampilkan URL untuk /_ah/login dan /_ah/logout di server lokal.

Halaman login pengembangan menyertakan formulir yang dapat Anda gunakan untuk memasukkan alamat email. Sesi Anda menggunakan alamat email apa pun yang Anda masukkan sebagai pengguna aktif.

Agar aplikasi yakin bahwa pengguna yang login adalah administrator, centang kotak "Login sebagai Administrator" pada formulir.

Menggunakan URL Fetch

Jika aplikasi Anda menggunakan URL Fetch API untuk membuat permintaan HTTP, server web pengembangan akan membuat permintaan tersebut langsung dari komputer Anda. Perilaku ini dapat berbeda dengan saat aplikasi berjalan di App Engine jika Anda menggunakan server proxy untuk mengakses situs.

Konsol Pengembangan

Server web pengembangan menyertakan aplikasi web konsol. Dengan konsol ini, Anda dapat menjelajahi Datastore lokal.

Untuk mengakses konsol, buka URL /_ah/admin di server Anda: http://localhost:8080/_ah/admin

Argumen Command Line

Perintah server pengembangan mendukung argumen command line berikut:

--address=...

Alamat host yang akan digunakan untuk server. Anda mungkin perlu menyetelnya agar dapat mengakses server pengembangan dari komputer lain di jaringan Anda. Alamat 0.0.0.0 memungkinkan akses localhost dan akses hostname. Default: localhost.

--default_gcs_bucket=...

Menetapkan nama bucket Google Cloud Storage default.

--disable_update_check

Jika diberikan, server pengembangan tidak akan menghubungi App Engine untuk memeriksa ketersediaan rilis baru SDK. Secara default, server memeriksa versi baru saat startup, dan mencetak pesan jika versi baru tersedia.

--generated_dir=...

Tetapkan direktori tempat file yang dihasilkan dibuat.

--help

Mencetak pesan yang membantu, lalu keluar.

--jvm_flag=...

Meneruskan flag yang diberikan sebagai argumen JVM. Dapat diulang untuk menyediakan beberapa flag.

--port=...

Nomor port yang akan digunakan untuk server. Default-nya adalah 8080.

--sdk_root=...

Jalur ke gcloud CLI, jika berbeda dengan lokasi alat.

--server=...

Server yang akan digunakan untuk menentukan versi SDK terbaru.