Runtime Java adalah stack software yang bertanggung jawab untuk menginstal kode aplikasi dan dependensi Anda, lalu menjalankan aplikasi tersebut di lingkungan fleksibel.
Versi
11
dan yang lebih baru dibuat menggunakan buildpack, yang mengharuskan Anda memilih sistem operasi di fileapp.yaml
. Misalnya, untuk menggunakan Java 21, Anda harus menentukan Ubuntu 22 sebagai sistem operasi.Runtime Java 8 / Jetty 9 memberikan dukungan untuk Spesifikasi Java Servlet 3.1 pada OpenJDK 8 dan Eclipse Jetty 9. Gambar Jetty mewarisi dari gambar OpenJDK.
Untuk daftar lengkap versi Java yang didukung, dan versi Ubuntu yang sesuai, lihat Jadwal dukungan runtime.
Prasyarat
Untuk menggunakan runtime Java:
Anda harus menginstal 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 perlu menambahkan Plugin Maven App Engine ke
pom.xml
:<plugin> <groupId>com.google.cloud.tools</groupId> <artifactId>appengine-maven-plugin</artifactId> <version>2.7.0</version> </plugin>
Opsi lain untuk men-deploy mencakup perintah
gcloud app deploy
atau plugin Gradle App Engine.
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]
Memilih versi Java
Versi runtime baru
Untuk runtime Java versi 11 dan yang lebih baru, Anda harus menyertakan
setelan runtime_config
dan operating_system
dalam file
app.yaml
untuk menentukan
sistem operasi.
Secara opsional, Anda dapat menentukan versi runtime dengan menyertakan setelan runtime_version
dalam file app.yaml
. Secara default, versi Java terbaru akan digunakan jika
setelan runtime_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 container 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
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 Anda
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
Menyesuaikan runtime Java 8 / Jetty 9
Anda tidak memerlukan Dockerfile untuk men-deploy aplikasi ke runtime Java 8/Jetty 9. Jika aplikasi memerlukan konfigurasi tambahan, Anda dapat secara eksplisit menyediakan Dockerfile untuk menyesuaikan runtime Java. Dockerfile harus menyertakan image dasar. Anda dapat menambahkan perintah tambahan ke Dockerfile untuk menyesuaikan runtime Java. Lihat Mem-build runtime kustom.
Dalam hal ini, your-application.war
adalah nama file WAR bawaan
dalam direktori target/
(maven), atau build/staged-app/
(gradle).