אם אתם עוברים לגרסה העדכנית ביותר של Java שנתמכת, והאפליקציה שלכם לא משתמשת בשירותים מיושנים שצורפו לחבילה, אתם צריכים לארוז מחדש את אפליקציית האינטרנט שלכם ב-Java 8 ב-App Engine לקובץ JAR שניתן להפעלה.
באפליקציה שלכם צריך להיות מחלקה Main שמפעילה שרת אינטרנט שמגיב לבקשות HTTP ביציאה 8080, שאולי מצוינת על ידי משתנה הסביבה PORT.
לדוגמה:
דוגמה להעברת WAR (Java 11)
ההוראות הבאות מסבירות איך לארוז מחדש אפליקציית Java 8 hello-world של App Engine כקובץ JAR כדי להפעיל אותה בסביבת זמן הריצה של Java 11.
ההעברה מתבצעת באמצעות ארטיפקט appengine-simple-jetty-main. הקוד הזה מספק מחלקה Main עם שרת אינטרנט פשוט של Jetty שטוען קובץ WAR ואורז את האפליקציה שלכם לקובץ JAR שניתן להפעלה:
משכפלים את ארטיפקט השרת Embedded Jetty למחשב המקומי:
git clone https://github.com/GoogleCloudPlatform/java-docs-samplesאפשרות נוספת היא להוריד את קובץ הדוגמה כקובץ ZIP ולחלץ אותו.
עוברים לספרייה שמכילה את הקוד לדוגמה:
cd java-docs-samples/appengine-java11/appengine-simple-jetty-main/מתקינים את יחסי התלות באופן מקומי:
mvn installמוסיפים את הקוד הבא לקובץ
pom.xmlשל הפרויקט:appengine-simple-jetty-maindependency:maven-dependencyplugin: App Engine פורס קבצים שנמצאים בספרייה${build.directory}/appengine-staging. אם מוסיפים את הפלאגיןmaven-dependencyל-build, App Engine מתקין את יחסי התלות שצוינו בתיקייה הנכונה.
יוצרים רכיב
entrypointבקובץapp.yamlכדי לקרוא לאובייקטappengine-simple-jetty-mainולהעביר את קובץ ה-WAR כארגומנט. לדוגמה, אפשר לעיין בקובץhelloworld-servletלדוגמה:app.yamlכדי להריץ את האפליקציה באופן מקומי:
אורזים את האפליקציה:
mvn clean packageמפעילים את השרת עם קובץ ה-WAR כארגומנט.
לדוגמה, כדי להפעיל את השרת בדוגמה
helloworld-servlet, מריצים את הפקודה הבאה מהתיקייהjava-docs-samples/appengine-java11/appengine-simple-jetty-main/:mvn exec:java -Dexec.args="../helloworld-java8/target/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בפקודה שאתם מריצים.