ID region
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.
Sebaiknya gunakan file appengine-web.xml
untuk mengonfigurasi aplikasi hanya jika Anda memigrasikan aplikasi yang sudah ada dari runtime App Engine Java 8 ke versi Java terbaru yang didukung dan Anda ingin menggunakan layanan paket lama.
Jika Anda menggunakan appengine-web.xml
dalam project, app.yaml
akan otomatis dibuat saat deployment.
Aplikasi App Engine Java menggunakan file konfigurasi, bernama appengine-web.xml
,
untuk menentukan informasi tentang aplikasi Anda dan mengidentifikasi file mana dalam file WAR
aplikasi
yang merupakan file statis (seperti gambar) dan file resource mana yang
digunakan aplikasi.
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 |
---|---|
<application> |
Tidak diperlukan jika Anda men-deploy aplikasi menggunakan alat berbasis Google Cloud SDK, seperti perintah |
|
Opsional. Jika Anda ingin menggunakan
layanan App Engine lama yang dipaketkan untuk runtime generasi kedua,
atur kolom ini ke |
|
Opsional dan hanya untuk runtime generasi kedua. Mengganti titik entri default yang merupakan command line proses yang melakukan booting aplikasi Java. Secara default, titik entri yang dihasilkan untuk class instance F4 (setelan memori dihitung dari class instance) setara dengan konfigurasi berikut: <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <entrypoint> java -showversion -Xms32M -Xmx819M -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:+PrintCommandLineFlags --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.nio.charset=ALL-UNNAMED --add-opens java.logging/java.util.logging=ALL-UNNAMED --add-opens java.base/java.util.concurrent=ALL-UNNAMED -Dclasspath.runtimebase=/base/java_runtime -Djava.class.path=/base/java_runtime/runtime-main.jar -Djava.library.path=/base/java_runtime: com/google/apphosting/runtime/JavaRuntimeMainWithDefaults --fixed_application_path=/workspace /base/java_runtime </entrypoint> </appengine-web-app>
Anda dapat mengubah konfigurasi untuk menambahkan flag proses JVM tambahan atau menentukan proses Anda sendiri untuk melakukan booting.
Perhatikan bahwa aplikasi di-deploy di direktori |
<async-session-persistence> |
Opsional. Anda dapat mengurangi latensi permintaan dengan mengonfigurasi aplikasi untuk menulis data sesi HTTP secara asinkron ke datastore: <async-session-persistence enabled="true" /> 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`: <async-session-persistence enabled="true" queue-name="myqueue"/> 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.
Aktifkan layanan untuk aplikasi Java 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 <precompilation-enabled>false</precompilation-enabled> |
<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
<public-root>/static</public-root> |
<resource-files> |
Opsional. File yang tercantum dalam elemen
Elemen
File resource App Engine dibaca menggunakan |
<runtime> |
Untuk menggunakan versi Java terbaru yang didukung, Anda harus menentukan entri ini dengan nilai
<runtime>java21</runtime> |
<service> |
Layanan sebelumnya dikenal sebagai modul. Saat ini, menentukan layanan sebagai:
|
<service-account> |
Opsional. Elemen <service-account>[SERVICE_ACCOUNT_NAME]@[PROJECT_ID].iam.gserviceaccount.com</service-account> |
<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
<sessions-enabled>true</sessions-enabled>
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 <ssl-enabled>false</ssl-enabled> 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> Mulai Java 21, Anda dapat mengonfigurasi server web Java untuk menggunakan thread virtual. Contoh: <system-properties> <property name="appengine.use.virtualthreads" value="true"/> </system-properties> |
<url-stream-handler> |
Opsional. Nilai yang mungkin adalah Nilai defaultnya adalah Jika Anda menetapkan <url-stream-handler>urlfetch</url-stream-handler> |
<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 |
<warmup-requests-enabled> |
Opsional. Default: true. Warmup request diaktifkan secara default untuk aplikasi Java.
Dengan warmup request diaktifkan, infrastruktur App Engine mengeluarkan permintaan `GET`
ke
Untuk menonaktifkan warmup request, tentukan <warmup-requests-enabled>false</warmup-requests-enabled> |
<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. Tentukan nama konektor yang sepenuhnya memenuhi syarat di elemen <vpc-access-connector>
<name>projects/[PROJECT_ID]/locations/[REGION]/connectors/[CONNECTOR_NAME]</name>
</vpc-access-connector> Untuk mengetahui informasi selengkapnya, lihat Menghubungkan ke resource internal dalam jaringan VPC. |
Menskalakan 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> <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> <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> <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 pembuatan stage default
Setelan default untuk opsi staging berbeda-beda, bergantung pada apakah Anda menggunakan alat berbasis Google Cloud SDK, seperti gcloud CLI, atau plugin Maven Gradle, Eclipse, atau IntelliJ berbasis Google Cloud SDK.
Elemen staging | Setelan default berbasis App Engine SDK - | Setelan default berbasis Google Cloud SDK |
---|---|---|
enable-jar-splitting |
false |
true |
jar-splitting-excludes |
TA | TA |
disable-jar-jsps |
false |
false |
enable-jar-classes |
false |
true . Hal ini dapat memengaruhi urutan pemuatan class. Jadi, jika aplikasi Anda bergantung pada urutan tertentu menggunakan default false sebelumnya, Anda dapat menyetelnya ke false . |
delete-jsps |
false |
true |
compile-encoding |
utf-8 |
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>