אם אתם עוברים לגרסה העדכנית ביותר של 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 Server למחשב המקומי:
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-mainתלות:maven-dependencyפלאגין: 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בפקודה שאתם מריצים.