Runtime Java adalah stack software yang bertanggung jawab untuk menginstal kode aplikasi dan dependensi Anda, lalu menjalankan aplikasi tersebut di lingkungan fleksibel.
Versi Java
Java 21 menggunakan buildpacks. buildpack membantu Anda mem-build dan mengonfigurasi container yang dapat di-deploy ke Google Cloud.
Untuk mengetahui daftar lengkap versi Java yang didukung, dan versi Ubuntu yang sesuai, lihat Jadwal dukungan runtime.
Untuk menggunakan versi Java yang didukung, Anda harus:
Instal gcloud CLI versi 420.0.0 atau yang lebih baru. Anda dapat memperbarui alat CLI dengan menjalankan perintah
gcloud components update
. Untuk melihat versi yang diinstal, Anda dapat menjalankan perintahgcloud version
.Untuk men-deploy menggunakan Maven, Anda harus menambahkan plugin Maven App Engine ke
pom.xml
:<plugin> <groupId>com.google.cloud.tools</groupId> <artifactId>appengine-maven-plugin</artifactId> <version>2.8.1</version> </plugin>
Opsi lain untuk men-deploy mencakup perintah
gcloud app deploy
atau plugin Gradle App Engine.Sertakan setelan
runtime_config
danoperating_system
dalam fileapp.yaml
untuk menentukan sistem operasi.Secara opsional, Anda dapat menentukan versi runtime dengan menyertakan setelan
runtime_version
dalam fileapp.yaml
. Secara default, versi Java terbaru akan digunakan jika setelanruntime_version
tidak ditentukan.Contoh
Untuk menentukan Java 21 di Ubuntu 22:
runtime: java env: flex runtime_config: operating_system: "ubuntu22" runtime_version: "21"
Untuk menentukan versi Java terbaru yang didukung di Ubuntu 22:
runtime: java env: flex runtime_config: operating_system: "ubuntu22"
Versi runtime sebelumnya
Untuk Java 8, tentukan setelan runtime_config
dan jdk
dalam
file app.yaml
Anda.
Java 8 mendukung:
Eclipse Jetty 9 runtime dan menjalankan Jetty 9 menggunakan Servlet 3.1.
Kode server Anda sendiri yang memantau port 8080 sebagai bagian dari aplikasi Anda. Fitur ini memungkinkan Anda menggunakan framework microservice seperti SparkJava dan Spring-Boot.
Contoh
Menentukan Jetty versi 9 (default / opsional):
runtime_config: jdk: openjdk8 server: jetty9
Menentukan Java versi 8:
runtime_config: jdk: openjdk8
Contoh
app.yaml
untuk Java 8:
Lihat pom.xml
untuk mengonfigurasi Maven dan build.gradle
untuk mengonfigurasi Gradle.
File opsional
File konfigurasi ini bersifat opsional:
Tempatkan file ini di tingkat teratas MyDir. Jika menggunakan file ini, Anda
harus men-deploy-nya secara terpisah dengan perintah gcloud app deploy
.
web.xml
bersifat opsional dan hanya diperlukan jika Anda tidak menggunakan anotasi Servlet 3.x.
Anda dapat menempatkan konten web statis serta halaman JavaServer di direktori webapp/
Anda.
Jetty 9, yang digunakan lingkungan fleksibel App Engine sebagai penampung Servlet-nya, menggunakan
Apache Jasper
sebagai implementasi JSP default dan mencakup taglibs JSTL.
File Dockerfile bersifat opsional dan digunakan untuk menyesuaikan runtime Java.
Mengaktifkan kompresi gzip
Pengendali gzip
dipaketkan dengan Jetty, tetapi tidak diaktifkan secara default. Untuk mengaktifkan modul ini, tetapkan variabel lingkungan, JETTY_MODULES_ENABLE=gzip
, dalam file app.yaml
:
env_variables:
JETTY_MODULES_ENABLE: 'gzip'
Menggunakan Panduan Memulai
Jetty
dapat mempercepat
waktu mulai aplikasi Anda dengan memindai kontennya terlebih dahulu dan membuat
file konfigurasi.
Jika menggunakan image yang diperluas, Anda dapat mengaktifkan panduan memulai dengan menjalankan /scripts/jetty/quickstart.sh
di Dockerfile, setelah WAR aplikasi ditambahkan.
Variabel lingkungan
Anda dapat menetapkan variabel lingkungan opsional berikut yang spesifik untuk runtime Java 8/Jetty 9. Anda juga dapat menetapkan variabel lingkungan OpenJDK 8.
Untuk menetapkan variabel lingkungan, gunakan kunci env_variables
dalam file app.yaml
.
Env Var | Properti Maven | Nilai/Komentar |
---|---|---|
JETTY_PROPERTIES |
Daftar pasangan name=value yang dipisahkan koma ditambahkan ke $JETTY_ARGS |
|
JETTY_MODULES_ENABLE |
Daftar modul yang dipisahkan koma untuk diaktifkan dengan menambahkan ke $JETTY_ARGS |
|
JETTY_MODULES_DISABLE |
Daftar modul yang dipisahkan koma untuk dinonaktifkan dengan menghapusnya dari $JETTY_BASE/start.d |
|
JETTY_ARGS |
Argumen yang diteruskan ke start.jar jetty. Argumen yang digunakan untuk konfigurasi jetty kustom harus diteruskan di sini. |
|
JAVA_OPTS |
Argumen runtime JVM |
Cloud Logging yang Ditingkatkan (Beta)
Saat berjalan di lingkungan fleksibel App Engine, Anda dapat mengonfigurasi Java Util
Logging untuk mengirim log ke Cloud Logging dengan menetapkan
variabel lingkungan JETTY_ARGS
. Contoh:
env_variables:
JETTY_ARGS: -Djava.util.logging.config.file=WEB-INF/logging.properties
Anda harus memberikan file logging.properties yang mengonfigurasi LoggingHandler sebagai berikut:
handlers=com.google.cloud.logging.LoggingHandler
# Optional configuration
.level=INFO
com.google.cloud.logging.LoggingHandler.level=FINE
com.google.cloud.logging.LoggingHandler.log=gae_app.log
com.google.cloud.logging.LoggingHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.SimpleFormatter.format=%3$s: %5$s%6$s
Dukungan untuk runtime Java lainnya
Jika perlu menggunakan versi Java yang tidak didukung, Anda dapat membuat runtime kustom dan memilih image dasar yang valid dengan versi Java yang Anda butuhkan.
Untuk image dasar yang disediakan Google atau image dasar Java Docker, lihat Mem-build runtime kustom.
Mengatur file Anda
Hierarki sumber Anda akan terlihat seperti ini:
MyDir/ [pom.xml] [build.gradle] [index.yaml] [cron.yaml] [dispatch.yaml] src/main/ appengine/ app.yaml docker/ [Dockerfile] java/ com.example.mycode/ MyCode.java webapp/ [index.html] [jsp.jsp] WEB-INF/ [web.xml]
Pengujian lokal
Saat melakukan pengujian di lingkungan lokal, Anda dapat menggunakan layanan Google Cloud yang diemulasi, bukan layanan Google Cloud jarak jauh. Anda dapat menggunakan emulator berikut:
Gunakan perintah gcloud
untuk memulainya sebelum Anda menjalankan aplikasi:
gcloud beta emulators datastore start
gcloud beta emulators pubsub start
gcloud beta emulators bigtable start
Maven
Tambahkan baris berikut di file pom.xml
Maven untuk menambahkan
Plugin Maven Jetty 9:
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.4.2.v20170220</version>
</plugin>
Untuk menjalankan aplikasi secara lokal, gunakan perintah Maven:
mvn jetty:run-exploded
Gradle
Ikuti petunjuk
Membuat project Gradle baru
untuk menambahkan
plugin Gretty Gradle
ke build.gradle
Anda, dan gunakan perintah:
gradle jettyRun
Men-deploy aplikasi
Untuk menginisialisasi Google Cloud CLI, jalankan:
gcloud init
Setelah menyelesaikan konfigurasi, Anda dapat menggunakan Google Cloud CLI untuk men-deploy direktori ini yang berisi file app.yaml
dan WAR menggunakan:
gcloud app deploy app.yaml
Jika Anda menggunakan salah satu file konfigurasi opsional (index.yaml
, cron.yaml
, dan dispatch.yaml
), deploy secara terpisah dengan perintah gcloud
. Contoh:
gcloud app deploy cron.yaml
Maven
Gunakan Maven untuk men-deploy aplikasi Anda:
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Ganti PROJECT_ID dengan ID project Google Cloud Anda. Jika
file pom.xml
sudah
menentukan
project ID, Anda tidak perlu menyertakan properti -Dapp.deploy.projectId
dalam
perintah yang dijalankan singkat ini.
Gradle
Gunakan Gradle untuk men-deploy aplikasi Anda:
gradle appengineDeploy