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.
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.
           
          Nilai 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 dalam 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>