Dokumen ini menjelaskan cara mengemas ulang aplikasi Java 8 sebagai file JAR untuk dijalankan di runtime Java yang didukung. Untuk menggunakan runtime Java yang didukung, Anda dapat menyematkan server seperti Jetty atau membuat container aplikasi dengan Docker untuk runtime kustom tanpa menulis ulang aplikasi sepenuhnya. Anda dapat menjalankan aplikasi WAR yang ada di platform Java modern atau lingkungan cloud fleksibel. Pilih dari metode berikut yang paling sesuai dengan strategi dan infrastruktur deployment Anda:
- Menggunakan Dockerfile untuk men-deploy aplikasi Anda (direkomendasikan)
- Menggunakan runtime Java tersemat (Jetty)
Siapkan aplikasi web Java 8 (file WAR) Anda
Sebelum memaketkan ulang aplikasi Java 8 sebagai file JAR yang didukung, Anda harus
membuat file WAR. Bagian ini menyediakan aplikasi Java 8 contoh yang mem-build
file WAR. Ikuti petunjuk untuk membuat aplikasi hello-world
Java 8:
Buat file
HelloServlet.java
di direktori sumber Anda:Buat file deployment descriptor
web.xml
untuk mengonfigurasi aplikasi web Anda:Buat halaman landing
index.jsp
:Tambahkan kode berikut di file
pom.xml
untuk menentukan build bagi aplikasi Java 8 Anda:Konfigurasi pengemasan WAR:
<groupId>com.example</groupId> <artifactId>HelloWorldApp</artifactId> <version>1.0</version> <packaging>war</packaging>
Plugin
maven-war-plugin
dengan sumber dan targetmaven.compiler
yang ditetapkan ke versi1.8
:<properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <java.version>8</java.version> </properties>
Dependensi
javax.servlet-api
:<dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> </dependencies>
Konfigurasi Maven:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>${maven.compiler.source}</source> <target>${maven.compiler.target}</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.3.2</version> </plugin> </plugins> </build>
Direktori project Anda akan terlihat seperti struktur berikut:
├── pom.xml └── src └── main ├── java │ └── com │ └── example │ └── HelloServlet.java └── webapp ├── WEB-INF │ └── web.xml └── index.jsp
Jalankan
mvn install
di direktori project aplikasi Anda untuk membuat file WARHelloWorldApp-1.0.war
di direktori target.
Menggunakan Dockerfile untuk men-deploy aplikasi Anda (direkomendasikan)
Runtime kustom cocok untuk platform yang mendukung container kustom, seperti runtime kustom App Engine. Runtime kustom memberikan fleksibilitas dengan memungkinkan Anda mengonfigurasi lingkungan runtime. Untuk contoh panduan penerapan runtime kustom, lihat Membuat aplikasi runtime kustom di lingkungan fleksibel App Engine.
Petunjuk berikut menjelaskan cara membuat container aplikasi Java 8 menggunakan Dockerfile:
- Siapkan aplikasi web Java 8 Anda (file WAR)
- Bangun image container dan kirimkan ke Artifact Registry
- Men-deploy aplikasi Anda
Bangun image container dan kirimkan ke Artifact Registry
Bagian ini menjelaskan cara membangun image Docker menggunakan Cloud Build dan mengirimkannya ke repositori Artifact Registry. Ikuti langkah-langkah berikut untuk membuat image penampung aplikasi Anda:
Buat file
cloudbuild.yaml
di direktori sumber Anda untuk membangun image Docker dan mengirim ke Artifact Registry:steps: # Step 1: Build the Docker image - name: "gcr.io/cloud-builders/docker" args: - "build" - "-t" - "$LOCATION-docker.pkg.dev/$PROJECT/$REPOSITORY/SERVICE:VERSION" - "." # Step 2: Push the Docker image to Artifact Registry - name: "gcr.io/cloud-builders/docker" args: - "push" - "$LOCATION-docker.pkg.dev/$PROJECT/$REPOSITORY/SERVICE:VERSION" images: - "$LOCATION-docker.pkg.dev/$PROJECT/$REPOSITORY/SERVICE:VERSION"
Ganti:
- LOCATION dengan Google Cloud region tempat Anda men-deploy aplikasi.
- PROJECT dengan Google Cloud project ID Anda.
- REPOSITORY dengan nama repositori Artifact Registry Anda.
- IMAGE dengan URL image container Anda.
- TAG dengan tag image container Anda.
Buat Dockerfile dengan konfigurasi berikut:
Download dan instal Docker untuk menguji aplikasi contoh, dan jalankan container Hello World di komputer lokal.
Bangun image container dan kirimkan ke Artifact Registry:
gcloud builds submit .
Men-deploy aplikasi Anda
Untuk men-deploy aplikasi App Engine Anda:
Konfigurasi file
app.yaml
untuk menggunakan runtime kustom di direktori sumber:Direktori project Anda akan terlihat seperti struktur berikut:
├── Dockerfile ├── README.md ├── app.yaml ├── cloudbuild.yaml ├── pom.xml └── src └── main ├── java │ └── com │ └── example │ └── HelloServlet.java └── webapp ├── WEB-INF │ └── web.xml └── index.jsp
Deploy aplikasi Anda menggunakan perintah
gcloud app deploy
:gcloud app deploy --image-url=REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE:tag
Ganti:
- LOCATION dengan Google Cloud region tempat Anda men-deploy aplikasi.
- PROJECT dengan Google Cloud project ID Anda.
- REPOSITORY dengan nama repositori Artifact Registry Anda.
- IMAGE dengan URL image container Anda.
- TAG dengan tag image container Anda.
Menggunakan runtime Java tersemat
Petunjuk berikut menunjukkan cara memaketkan ulang aplikasi Java 8 App Engine dengan server tersemat (Jetty) untuk dijalankan sebagai JAR mandiri di runtime Java yang didukung:
- Membuat server Jetty tersemat
- Siapkan aplikasi web Java 8 Anda (file WAR)
- Jalankan file WAR dengan Jetty tersemat dan deploy aplikasi Anda
Membuat server Jetty Tersemat
Untuk memaketkan file WAR aplikasi Anda dengan server Jetty yang disematkan, ikuti langkah-langkah berikut:
Buat class
Main
untuk melakukan inisialisasi dan mengonfigurasi server Jetty agar menjalankan file WAR Anda. ClassMain
menyiapkan port server yang secara default adalah8080
. Anda juga dapat mengubah kode sumber untuk menggunakan port yang ditentukan dalam variabel lingkunganPORT
. ClassMain
mengonfigurasi pengendaliWebAppContext
untuk menayangkan file WAR Anda:Buat file project Maven
pom.xml
dan tambahkan konfigurasi berikut:Tetapkan properti
maven.compiler.source
danmaven.compiler.target
ke runtime Java yang didukung:Tambahkan dependensi untuk Jetty:
Konfigurasi properti
maven-assembly-plugin
ke dependensi paket:
Direktori project Anda akan terlihat seperti struktur berikut:
├─src │ └─main │ └─java │ └─jetty │ └─Main.java └─pom.xml
Jalankan perintah
mvn install
di direktori project peluncur Jetty. Tindakan ini akan membuatjetty-jar-with-dependencies.jar
di direktori target Anda.Ikuti petunjuk di bagian Siapkan aplikasi web Java 8 (file WAR) untuk membuat file WAR.
Jalankan file WAR dengan Jetty tersemat dan deploy aplikasi Anda
Bagian ini memberikan langkah-langkah untuk mengemas aplikasi Anda ke dalam file JAR yang dapat dieksekusi. Ikuti petunjuk berikut untuk mengemas dan men-deploy aplikasi Anda:
Tempatkan JAR runner Jetty yang dihasilkan
jetty-jar-with-dependencies.jar
dan file WAR aplikasi AndaHelloWorldApp-1.0.war
di direktori yang sama.Jalankan aplikasi menggunakan runtime Java yang didukung:
java -jar jetty-jar-with-dependencies.jar HelloWorldApp-1.0.war
- Di browser web Anda, buka http://localhost:8080. Anda akan melihat halaman selamat datang aplikasi.
Buat elemen
entrypoint
dalam fileapp.yaml
untuk memanggil filejetty-jar-with-dependencies
, dan teruskan file WAR sebagai argumen. Versi yang Anda tentukan dalam file WAR harus sama dengan versi filepom.xml
:Deploy aplikasi Anda menggunakan perintah
gcloud app deploy
.