Si migras a la versión más reciente compatible de Java y tu aplicación no usa los servicios empaquetados heredados, debes volver a empaquetar tu aplicación web de App Engine en un archivo JAR ejecutable.
Tu aplicación debe tener una clase Main que inicie un servidor web que responda a las solicitudes HTTP en el puerto 8080, que podría especificarse con la variable de entorno PORT.
Por ejemplo:
Ejemplo de migración de WAR (Java 21)
En las siguientes instrucciones, se muestra cómo volver a empaquetar una aplicación hello-world WAR de App Engine como un JAR para que se ejecute en el entorno de ejecución de Java 21.
La migración usa el artefacto appengine-simple-jetty-main. Esto proporciona una clase Main con un servidor web Jetty simple que carga un archivo WAR y empaqueta tu app en un archivo JAR ejecutable:
Clona el artefacto del servidor Jetty incorporado en tu máquina local:
git clone https://github.com/GoogleCloudPlatform/java-docs-samplesDe manera opcional, puedes descargar la muestra como un archivo ZIP y extraerla.
Dirígete al directorio que contiene el código de muestra:
cd java-docs-samples/flexible/repacking-legacy-applications/appengine-simple-jetty-main/Compila el JAR del ejecutor de Jetty:
mvn installEsto genera
jetty-jar-with-dependencies.jaren tu directoriotarget/.Configura el archivo de compilación
pom.xmlpara el servidor de Jetty:- Propiedades del compilador (Java 21):
- Dependencias de Jetty integradas:
- Configuración de
maven-assembly-plugin:
Coloca el archivo
jetty-jar-with-dependencies.jargenerado y el archivo WAR de tu aplicación. Por ejemplo,helloworld.waren el mismo directorio.Crea un archivo
app.yamlen el directorio de tu aplicación para especificar el tiempo de ejecución de Java 21 y un elementoentrypointpara llamar al archivojetty-jar-with-dependencies.jary pasar tu archivo WAR como argumento:runtime: java21 entrypoint: 'java -jar jetty-jar-with-dependencies.jar helloworld.war'Para ejecutar tu aplicación de forma local, sigue estos pasos:
Inicia el servidor con tu archivo WAR como argumento:
java -jar jetty-jar-with-dependencies.jar helloworld.warEn el navegador web, ingresa la siguiente dirección:
Para implementar tu aplicación, ejecuta el siguiente comando:
Herramientas de gcloud
gcloud app deploy
Complemento de Maven
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Reemplaza PROJECT_ID por el ID de tu proyecto de Google Cloud . Si tu archivo
pom.xmlya especifica tu ID del proyecto, no necesitas incluir la propiedad-Dapp.deploy.projectIden el comando que ejecutas.