Wenn Sie zur neuesten unterstützten Java-Version migrieren und Ihre Anwendung keine gebündelten Legacy-Dienste verwendet, müssen Sie Ihre App Engine Java 8-Webanwendung in eine ausführbare JAR-Datei neu verpacken.
Ihre Anwendung muss eine Main
-Klasse haben, die einen Webserver startet. Dieser antwortet auf HTTP-Anfragen von dem Port, der mit der PORT
-Umgebungsvariablen festgelegt wurde, in der Regel 8081.
Beispiel:
Beispiel für die WAR-Migration (Java 11)
In der folgenden Anleitung wird gezeigt, wie Sie eine App Engine Java 8 hello-world
-Anwendung als JAR-Paket zur Ausführung in der Java 11-Laufzeit neu verpacken.
Bei der Migration wird das Artefakt appengine-simple-jetty-main
verwendet. Dadurch wird eine Main
-Klasse mit einem einfachen Jetty-Webserver bereitgestellt, der eine WAR-Datei lädt und Ihre Anwendung in einer ausführbaren JAR-Datei verpackt:
Klonen Sie das Artefakt des eingebetteten Jetty Server auf Ihren lokalen Computer:
git clone https://github.com/GoogleCloudPlatform/java-docs-samples
Sie können auch das Beispiel als ZIP-Datei herunterladen und extrahieren.
Wechseln Sie zu dem Verzeichnis, das den Beispielcode enthält:
cd java-docs-samples/appengine-java11/appengine-simple-jetty-main/
Installieren Sie die Abhängigkeit lokal:
mvn install
Fügen Sie der Projektdatei
pom.xml
folgenden Code hinzu:appengine-simple-jetty-main
Abhängigkeitmaven-dependency
Plug-in App Engine stellt Dateien im Verzeichnis${build.directory}/appengine-staging
bereit. Wenn Sie dem Build das Plug-inmaven-dependency
hinzufügen, installiert App Engine die angegebenen Abhängigkeiten in den richtigen Ordner.
Erstellen Sie ein
entrypoint
-Element in Ihrerapp.yaml
-Datei, um dasappengine-simple-jetty-main
-Objekt aufzurufen, und übergeben Sie die WAR-Datei als Argument. Sehen Sie sich zur Veranschaulichung die Dateiapp.yaml
deshelloworld-servlet
-Beispiels an:So führen Sie Ihre Anwendung lokal aus:
Verpacken Sie Ihre Anwendung:
mvn clean package
Starten Sie den Server mit Ihrer WAR-Datei als Argument.
Sie können den Server beispielsweise im
helloworld-servlet
-Beispiel starten, indem Sie den folgenden Befehl aus dem Ordnerjava-docs-samples/appengine-java11/appengine-simple-jetty-main/
ausführen:mvn exec:java -Dexec.args="../helloworld-java8/target/helloworld.war"
Geben Sie im Webbrowser die folgende Adresse ein:
So stellen Sie Ihre Anwendung bereit:
gcloud-Tool
gcloud app deploy
Maven-Plug-in
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Ersetzen Sie PROJECT_ID durch die ID Ihres Google Cloud-Projekts. Wenn in der Datei
pom.xml
bereits Ihre Projekt-ID angegeben ist, müssen Sie das Attribut-Dapp.deploy.projectId
nicht in dem von Ihnen ausgeführten Befehl einfügen.