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 versi terbaru dev_appserver.py
untuk menjalankan aplikasi Anda secara lokal. Untuk mendownload versi devapp_server.py
yang diarsipkan, ikuti langkah-langkah berikut:
Dari arsip, download folder zip yang berisi server
dev_appserver.py
untuk runtime yang telah mencapai akhir dukungan.Ekstrak konten direktori ke sistem file lokal, seperti ke direktori
/home
Anda. Anda dapat menemukandev_appserver.py
dalam direktorigoogle_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:
- Mulai server pengembangan seperti yang dijelaskan sebelumnya.
- Buka Konsol Pengembangan.
- 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 SDK baru. Secara default, server akan memeriksa versi baru saat sistem dimulai, 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.