אם אתם מבצעים העברה לגרסה העדכנית הנתמכת של Java והאפליקציה שלכם לא משתמשת בשירותים מדור קודם, אתם צריכים לארוז מחדש את אפליקציית האינטרנט של App Engine לקובץ JAR שניתן להפעלה.
באפליקציה שלכם צריך להיות מחלקה Main שמפעילה שרת אינטרנט שמגיב לבקשות HTTP ביציאה 8080, שאולי מצוינת על ידי משתנה הסביבה PORT.
לדוגמה:
דוגמה להעברת WAR (Java 21)
בהוראות הבאות מוסבר איך לארוז מחדש אפליקציית WAR של hello-world App Engine כ-JAR כדי להפעיל אותה בסביבת זמן הריצה של Java 21.
ההעברה מתבצעת באמצעות ארטיפקט appengine-simple-jetty-main. הקוד הזה מספק מחלקה מסוג Main עם שרת אינטרנט פשוט של Jetty שטוען קובץ WAR ואורז את האפליקציה שלכם לקובץ JAR שניתן להפעלה:
משכפלים את ארטיפקט השרת Embedded Jetty למחשב המקומי:
git clone https://github.com/GoogleCloudPlatform/java-docs-samplesאפשרות נוספת היא להוריד את הקובץ לדוגמה כקובץ ZIP ולחלץ אותו.
עוברים לספרייה שמכילה את הקוד לדוגמה:
cd java-docs-samples/flexible/repacking-legacy-applications/appengine-simple-jetty-main/יוצרים את קובץ ה-JAR של Jetty runner:
mvn installהפעולה הזו יוצרת את
jetty-jar-with-dependencies.jarבספרייהtarget/.מגדירים את קובץ ה-build
pom.xmlלשרת Jetty:- מאפייני מהדר (Java 21):
- תלויות מוטמעות של Jetty:
- הגדרה של
maven-assembly-plugin
ממקמים את קובץ ה-
jetty-jar-with-dependencies.jarשנוצר ואת קובץ ה-WAR של האפליקציה. לדוגמה,helloworld.warבאותה ספרייה.יוצרים קובץ
app.yamlבספריית האפליקציה כדי לציין את זמן הריצה של Java 21 ורכיבentrypointכדי לקרוא לקובץjetty-jar-with-dependencies.jarולהעביר את קובץ ה-WAR כארגומנט:runtime: java21 entrypoint: 'java -jar jetty-jar-with-dependencies.jar helloworld.war'כדי להריץ את האפליקציה באופן מקומי:
מפעילים את השרת עם קובץ ה-WAR כארגומנט:
java -jar jetty-jar-with-dependencies.jar helloworld.warבדפדפן האינטרנט, מזינים את הכתובת הבאה:
כדי לפרוס את האפליקציה:
כלי gcloud
gcloud app deploy
פלאגין Maven
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
מחליפים את PROJECT_ID במזהה הפרויקט. Google Cloud אם קובץ
pom.xmlשלכם כבר מציין את מזהה הפרויקט, אין צורך לכלול את המאפיין-Dapp.deploy.projectIdבפקודה שמריצים.