En este documento, se describe cómo volver a empaquetar una aplicación de Java 8 como un archivo JAR
para que se ejecute en los entornos de ejecución de Java 11/17.
Tu aplicación debe tener una clase Main
que inicie un servidor web que responda a las solicitudes HTTP en el puerto especificado por la variable del entorno PORT
, por lo general, 8081.
Por ejemplo:
Ejemplo de migración de WAR
En las siguientes instrucciones, se muestra cómo volver a empaquetar una aplicación hello-world
de Java 8 de App Engine como un JAR para que se ejecute en el entorno de ejecución de Java 11/17.
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-samples
De 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/appengine-java11/appengine-simple-jetty-main/
Instala la dependencia de forma local:
mvn install
Agregue el siguiente código al archivo
pom.xml
:- dependencia
appengine-simple-jetty-main
: - Complemento
maven-dependency
: App Engine implementa archivos ubicados en el directorio${build.directory}/appengine-staging
. Si agregas el complementomaven-dependency
a tu compilación, App Engine instala las dependencias especificadas en la carpeta correcta.
- dependencia
Crea un elemento
entrypoint
en el archivoapp.yaml
para llamar al objetoappengine-simple-jetty-main
y pasar el archivo WAR como argumento. La versiónWAR
debe ser la misma que la que aparece en el archivopom.xml
:Para ejecutar tu aplicación de forma local, sigue estos pasos:
Empaqueta tu aplicación:
mvn clean package
Inicia el servidor con tu archivo WAR como argumento.
Por ejemplo, puedes iniciar el servidor en la muestra
helloworld-war
si ejecutas el siguiente comando desde la carpetajava-docs-samples/appengine-java11/appengine-simple-jetty-main/
:mvn exec:java -Dexec.args="../flexible/java-11/helloworld-war/target/helloworld-1.war"
En el navegador web, ingresa la siguiente dirección:
Para implementar tu aplicación con el complemento de Maven, sigue estos pasos:
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud. Si tu archivo
pom.xml
ya especifica tu ID del proyecto, no necesitas incluir la propiedad-Dapp.deploy.projectId
en el comando que ejecutas.