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.javadi direktori sumber Anda:Buat file deployment descriptor
web.xmluntuk mengonfigurasi aplikasi web Anda:Buat halaman landing
index.jsp:Tambahkan kode berikut di file
pom.xmluntuk 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-plugindengan sumber dan targetmaven.compileryang 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.jspJalankan
mvn installdi direktori project aplikasi Anda untuk membuat file WARHelloWorldApp-1.0.wardi 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.yamldi 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.yamluntuk 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.jspDeploy aplikasi Anda menggunakan perintah
gcloud app deploy:gcloud app deploy --image-url=REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE:tagGanti:
- 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
Mainuntuk melakukan inisialisasi dan mengonfigurasi server Jetty agar menjalankan file WAR Anda. ClassMainmenyiapkan port server yang secara default adalah8080. Anda juga dapat mengubah kode sumber untuk menggunakan port yang ditentukan dalam variabel lingkunganPORT. ClassMainmengonfigurasi pengendaliWebAppContextuntuk menayangkan file WAR Anda:Buat file project Maven
pom.xmldan tambahkan konfigurasi berikut:Tetapkan properti
maven.compiler.sourcedanmaven.compiler.targetke runtime Java yang didukung:Tambahkan dependensi untuk Jetty:
Konfigurasi properti
maven-assembly-pluginke dependensi paket:
Direktori project Anda akan terlihat seperti struktur berikut:
├─src │ └─main │ └─java │ └─jetty │ └─Main.java └─pom.xmlJalankan perintah
mvn installdi direktori project peluncur Jetty. Tindakan ini akan membuatjetty-jar-with-dependencies.jardi 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.jardan file WAR aplikasi AndaHelloWorldApp-1.0.wardi 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
entrypointdalam fileapp.yamluntuk 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.