ID wilayah
REGION_ID
adalah kode singkat yang ditetapkan Google berdasarkan region yang Anda pilih saat membuat aplikasi. Kode ini tidak sesuai dengan negara atau provinsi, meskipun beberapa ID region mungkin tampak mirip dengan kode negara dan provinsi yang umum digunakan. Untuk aplikasi yang dibuat setelah Februari 2020, REGION_ID.r
disertakan dalam URL App Engine. Untuk aplikasi lama yang dibuat sebelum tanggal tersebut, ID region bersifat opsional dalam URL.
Pelajari ID region lebih lanjut.
Selain deployment descriptor web.xml
, aplikasi App Engine Java
menggunakan file konfigurasi, bernama appengine-web.xml
,
untuk menentukan informasi tentang aplikasi dan untuk mengidentifikasi file mana dalam file
WAR
aplikasi yang merupakan file statis (seperti gambar) dan mana yang merupakan file sumber daya
yang digunakan oleh aplikasi.
Contoh
Contoh berikut adalah file minimal yang menentukan runtime Java 8 tanpa file statis atau file resource:
<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<threadsafe>true</threadsafe>
<runtime>java8</runtime>
</appengine-web-app>
Sintaks
Aplikasi App Engine Java harus memiliki file bernama appengine-web.xml
di dalam WAR-nya,
di direktori WEB-INF/
. File ini adalah file XML dengan elemen root
<appengine-web-app>
.
Anda dapat menemukan Definisi Jenis Dokumen dan spesifikasi skema untuk
appengine-web.xml
di direktori docs/
SDK.
Elemen | Deskripsi |
---|---|
<async-session-persistence> |
Opsional. Anda dapat mengurangi latensi permintaan dengan mengonfigurasi aplikasi untuk menulis data sesi HTTP secara asinkron ke datastore: <?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <!-- ... --> <async-session-persistence enabled="true" /> <!-- ... --> </appengine-web-app> Dengan mengaktifkan persistensi sesi asinkron, App Engine akan mengirimkan tugas Task Queue untuk menulis data sesi ke datastore sebelum menulis data ke memcache. Secara default, tugas akan dikirim ke antrean `default`. Jika Anda ingin menggunakan antrean lain, tambahkan atribut `queue-name`: <?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <!-- ... --> <async-session-persistence enabled="true" queue-name="myqueue"/> <!-- ... --> </appengine-web-app> Data sesi selalu ditulis secara sinkron ke memcache. Jika permintaan mencoba membaca data sesi saat memcache tidak tersedia (atau data sesi telah dihapus), permintaan tersebut akan digagalkan ke Datastore, yang mungkin belum memiliki data sesi terbaru. Artinya, persistensi sesi asinkron dapat menyebabkan aplikasi melihat data sesi yang sudah tidak berlaku. Namun, untuk sebagian besar aplikasi, manfaat latensi jauh lebih besar daripada risikonya. |
<auto-id-policy> |
Opsional. Jika Anda
menetapkan ID entity secara otomatis, Anda dapat mengubah metode
yang digunakan dengan menetapkan kebijakan ID otomatis. Berikut ini adalah opsi yang valid:
|
<automatic-scaling> |
Opsional. Untuk penjelasan lebih lanjut, lihat bagian penskalaan otomatis. |
<basic-scaling> |
Opsional. Untuk penjelasan lebih lanjut, lihat bagian penskalaan dasar. |
<env-variables> |
Opsional.
File <env-variables> <env-var name="DEFAULT_ENCODING" value="UTF-8" /> </env-variables> Untuk menghindari konflik dengan lingkungan lokal Anda, server pengembangan tidak menetapkan variabel lingkungan berdasarkan file ini, dan mengharuskan lingkungan lokal menetapkan variabel ini ke nilai yang cocok. export DEFAULT_ENCODING="UTF-8" dev_appserver war Saat di-deploy ke App Engine, lingkungan dibuat dengan variabel ini yang telah ditetapkan. |
<inbound-services> |
Opsional.
Sebelum aplikasi dapat menerima email,
aplikasi harus dikonfigurasi untuk mengaktifkan layanan.
Anda dapat mengaktifkan layanan untuk aplikasi Java 8 dengan menyertakan
bagian Tersedia layanan masuk berikut:
|
<instance-class> |
Opsional. Ukuran class instance untuk modul ini. Class instance berikut tersedia saat menentukan opsi penskalaan yang berbeda:
|
<manual-scaling> |
Opsional. Untuk penjelasan lebih lanjut, lihat bagian penskalaan manual. |
<precompilation-enabled> |
Opsional. App Engine menggunakan proses "prakompilasi" dengan bytecode Java dari sebuah aplikasi untuk meningkatkan performa aplikasi di Java runtime environment. Fungsi kode prakompilasi identik dengan bytecode asli.
Jika karena alasan tertentu Anda lebih memilih agar aplikasi tidak menggunakan prakompilasi,
Anda dapat menonaktifkannya dengan menambahkan kode berikut ke
file <?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <!-- ... --> <precompilation-enabled>false</precompilation-enabled> <!-- ... --> </appengine-web-app> |
module |
Catatan: Modul kini diberi nama
Layanan
dan layanan tetap dideklarasikan dalam file Wajib diisi jika membuat layanan. Opsional untuk layanan default. Setiap layanan dan versi harus memiliki nama. Nama dapat berisi angka, huruf, dan tanda hubung. Nama ini tidak boleh lebih dari 63 karakter, diawali atau diakhiri dengan tanda hubung, dan berisi string `-dot`. Pilih nama unik untuk setiap layanan dan setiap versi. Jangan gunakan nama yang sama antara layanan dan versi. Lihat juga service. |
<public-root> |
Opsional.
Default
Misalnya, kode berikut akan memetakan jalur URL
<?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <!-- ... --> <public-root>/static</public-root> <!-- ... --> </appengine-web-app> |
<resource-files> |
Opsional. File yang tercantum dalam elemen
Elemen
File resource App Engine dibaca menggunakan |
runtime |
Untuk menggunakan runtime Java 8, Anda harus menetapkan entri ini ke nilai
Contoh: <?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <!-- ... --> <runtime>java8</runtime> <!-- ... --> </appengine-web-app> |
service |
Layanan sebelumnya dikenal sebagai modul. Saat ini, menentukan layanan sebagai:
|
service-account |
Opsional. Elemen <?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <!-- ... --> <service-account>[SERVICE_ACCOUNT_NAME]@[PROJECT_ID].iam.gserviceaccount.com</service-account> <!-- ... --> </appengine-web-app> |
<sessions-enabled> |
Opsional. App Engine mencakup implementasi sesi menggunakan antarmuka sesi servlet. Implementasi ini menyimpan data sesi di Datastore untuk persistensi, dan juga menggunakan memcache agar cepat. Seperti kebanyakan penampung servlet lainnya, atribut sesi yang ditetapkan dengan `session.setAttribute()` selama permintaan akan dipertahankan di akhir permintaan.
Fitur ini dinonaktifkan secara default. Untuk mengaktifkannya, tambahkan kode berikut ke
<?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <!-- ... --> <sessions-enabled>true</sessions-enabled> <!-- ... --> </appengine-web-app>
Implementasi ini akan membuat entity Datastore jenis
Catatan: Karena App Engine menyimpan data sesi di
Datastore dan memcache, semua nilai yang disimpan dalam sesi harus
menerapkan antarmuka
Lihat elemen
|
<ssl-enabled> |
Opsional. Secara default, setiap pengguna dapat mengakses URL apa pun menggunakan HTTP atau HTTPS. Anda dapat mengonfigurasi aplikasi agar mewajibkan HTTPS untuk URL tertentu dalam deployment descriptor Lihat Deployment Descriptor: URL Aman.
Jika Anda ingin melarang penggunaan HTTPS untuk aplikasi, masukkan
kode berikut dalam file <?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <!-- ... --> <ssl-enabled>false</ssl-enabled> <!-- ... --> </appengine-web-app> Tidak ada cara untuk melarang HTTPS pada jalur URL tertentu dan tidak untuk yang lainnya di Java runtime environment. |
<static-error-handlers> |
Opsional.
Saat terjadi error tertentu, App Engine akan menayangkan halaman error
umum. Anda dapat mengonfigurasi aplikasi untuk menayangkan file statis kustom, bukan
halaman error umum ini, selama data error kustom kurang dari
10 kilobyte. Anda dapat menyiapkan file statis berbeda yang akan ditayangkan
untuk setiap kode error yang didukung dengan menentukan file dalam
file <static-error-handlers> <handler file="default_error.html" /> <handler file="over_quota.html" error-code="over_quota" /> </static-error-handlers> Peringatan: Pastikan jalur ke file respons error tidak tumpang tindih dengan jalur pengendali file statis.
Setiap entri
Secara opsional, Anda dapat menentukan |
<static-files> |
Opsional.
Elemen
Elemen
<static-files> <include path="/my_static-files" > <http-header name="Access-Control-Allow-Origin" value="http://example.org" /> </include> </static-files> |
<system-properties> |
Opsional. File <system-properties> <property name="myapp.maximum-message-length" value="140" /> <property name="myapp.notify-every-n-signups" value="1000" /> <property name="myapp.notify-url" value="http://www.example.com/signupnotify" /> </system-properties> <env-variables> <env-var name="DEFAULT_ENCODING" value="UTF-8" /> </env-variables> |
<threadsafe> |
Wajib.
Saat elemen <?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <!-- ... --> <threadsafe>true</threadsafe> <!-- ... --> </appengine-web-app>
Jika ingin menggunakan permintaan serentak, kode aplikasi Anda harus
menggunakan sinkronisasi thread yang tepat sebelum mengaktifkan
Elemen ini tidak didukung pada runtime Java 11+. |
<url-stream-handler> |
Opsional. Nilai yang mungkin adalah Nilai defaultnya adalah Jika Anda menetapkan <?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <!-- ... --> <url-stream-handler>urlfetch</url-stream-handler> <!-- ... --> </appengine-web-app> |
<version> |
Elemen
Nama versi harus dimulai dengan huruf untuk membedakannya dari
instance numerik yang selalu ditentukan dengan angka. Hal ini adalah untuk menghindari
ambiguitas dengan URL seperti
App Engine menggunakan ID versi ini untuk menentukan apakah
akan membuat versi baru aplikasi dengan ID yang diberikan (atau
mengganti versi aplikasi dengan ID yang diberikan jika sudah
ada). Anda dapat menguji versi baru aplikasi dengan URL
menggunakan "-dot-" sebagai pemisah subdomain di URL, seperti,
|
<warmup-requests-enabled> |
Opsional. Default: true. Warmup request diaktifkan secara default untuk aplikasi Java 8.
Dengan warmup request diaktifkan, infrastruktur App Engine mengeluarkan permintaan `GET`
ke
Untuk menonaktifkan warmup request, tentukan <?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <!-- ... --> <warmup-requests-enabled>false</warmup-requests-enabled> <!-- ... --> </appengine-web-app> |
<vpc-access-connector> |
Opsional. Mengonfigurasi aplikasi Anda untuk menggunakan konektor Akses VPC Serverless, yang memungkinkan aplikasi mengirim permintaan ke resource internal dalam jaringan VPC Anda. Untuk mengetahui informasi selengkapnya, lihat Menghubungkan ke jaringan VPC.
<vpc-access-connector> <name>projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME</name> <egress-setting>all-traffic</egress-setting> </vpc-access-connector> |
Penskalaan elemen
Tabel berikut mencantumkan opsi cara memilih penentuan penskalaan aplikasi yang sesuai.
Untuk perbandingan fitur performa jenis penskalaan, lihat bagian Penskalaan instance dinamis.
Elemen | Deskripsi |
---|---|
<automatic-scaling> |
Opsional. Penskalaan otomatis diasumsikan secara default dengan kelas instance
Elemen Elemen ini dapat berisi elemen berikut:
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <application>simple-app</application> <module>default</module> <version>uno</version> <threadsafe>true</threadsafe> <instance-class>F2</instance-class> <automatic-scaling> <target-cpu-utilization>0.65</target-cpu-utilization> <min-instances>5</min-instances> <max-instances>100</max-instances> <max-concurrent-requests>50</max-concurrent-requests> </automatic-scaling> </appengine-web-app> |
<basic-scaling> |
Opsional.
Elemen Elemen ini dapat berisi elemen berikut:
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <application>simple-app</application> <module>default</module> <version>uno</version> <threadsafe>true</threadsafe> <instance-class>B8</instance-class> <basic-scaling> <max-instances>11</max-instances> <idle-timeout>10m</idle-timeout> </basic-scaling> </appengine-web-app> |
<manual-scaling> |
Opsional.
Elemen Elemen ini dapat berisi elemen berikut:
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <application>simple-app</application> <module>default</module> <version>uno</version> <threadsafe>true</threadsafe> <instance-class>B8</instance-class> <manual-scaling> <instances>5</instances> </manual-scaling> </appengine-web-app> |
Elemen pembuatan stage
Sebagian besar pekerjaan yang dilakukan selama deployment berlangsung secara lokal dalam langkah persiapan yang disebut staging, tempat file JAR disusun, JSP dikompilasi, dan seterusnya. Secara opsional, Anda dapat mengonfigurasi bagian tertentu dari perilaku staging menggunakan elemen staging dalam file konfigurasi aplikasi. Sebagian besar aplikasi akan berhasil di-deploy tanpa harus mengonfigurasi perilaku staging secara manual. Jika aplikasi Anda tidak di-deploy, Anda mungkin perlu mengonfigurasi staging menggunakan opsi yang ditunjukkan di bawah ini.
Elemen | Deskripsi |
---|---|
<staging> |
Opsional. Sebagian besar aplikasi tidak perlu mengubah perilaku default. Elemen staging memungkinkan Anda menentukan konfigurasi staging tertentu jika diperlukan untuk deployment. Elemen ini dapat berisi elemen berikut:
Contoh: <staging> <delete-jsps>false</delete-jsps> </staging> |
Opsi staging default
Default untuk opsi staging adalah sebagai berikut:
Elemen staging | Nilai default |
---|---|
enable-jar-splitting |
true |
jar-splitting-excludes |
TA |
disable-jar-jsps |
false |
enable-jar-classes |
true . Hal ini dapat memengaruhi urutan pemuatan class. Jadi, jika aplikasi Anda bergantung pada urutan tertentu, setel ini ke false . |
delete-jsps |
true |
compile-encoding |
utf-8 |
Sintaksis Sertakan dan kecualikan
Pola jalur ditentukan menggunakan nol atau beberapa elemen <include>
dan
<exclude>
. Dalam sebuah pola, '*'
mewakili nol atau beberapa
karakter bebas dalam nama file atau direktori, dan **
mewakili nol atau beberapa
direktori di satu jalur. File dan direktori yang cocok dengan pola <exclude>
tidak akan diupload saat Anda men-deploy aplikasi ke App Engine. Namun, file dan direktori ini tetap dapat diakses oleh aplikasi Anda saat dijalankan di Server Pengembangan lokal.
Elemen <include>
menggantikan perilaku default yang menyertakan
semua file. Elemen <exclude>
berlaku setelah semua
pola <include>
(serta default jika tidak ada
<include>
eksplisit yang disediakan).
Contoh berikut menunjukkan cara menetapkan semua file .png
sebagai file
statis (kecuali yang ada dalam direktori data/
dan semua subdirektorinya):
<static-files>
<include path="/**.png" />
<exclude path="/data/**.png" />
</static-files>
Anda juga dapat menetapkan header HTTP yang akan digunakan saat merespons permintaan ke resource statis ini.
<static-files>
<include path="/my_static-files" >
<http-header name="Access-Control-Allow-Origin"
value="http://example.org" />
</include>
</static-files>
Jenis MIME untuk file statis
Secara default, file statis ditayangkan menggunakan jenis MIME yang dipilih berdasarkan ekstensi nama file. Anda dapat mengaitkan jenis MIME khusus dengan ekstensi
nama file untuk file statis menggunakan elemen <mime-mapping>
di web.xml
.
Waktu tunggu URLFetch
Anda dapat menetapkan batas waktu untuk setiap permintaan URLFetch. Secara default, batas waktu pengambilan adalah 5 detik.
Anda dapat mengubah default ini dengan menyertakan setelan berikut dalam
file konfigurasi appengine-web.xml
Anda. Tentukan waktu tunggu dalam detik:
<system-properties>
<property name="appengine.api.urlfetch.defaultDeadline" value="10"/>
</system-properties>