Escribir un servicio web

En esta guía se muestra cómo escribir un servicio web Java para que se ejecute en el entorno estándar de App Engine. Para obtener más información sobre el tiempo de ejecución de Java y cómo funciona, consulta Entorno de tiempo de ejecución de Java.

Antes de empezar

Si aún no lo has hecho:

  1. Instala la versión más reciente del Java Development Kit (JDK) para la versión del entorno de ejecución de App Engine que quieras usar.
  2. Descarga e instala Apache Maven para compilar, ejecutar y desplegar la aplicación de ejemplo.

Puntos clave

  • App Engine inicia tu aplicación subiendo una aplicación JAR ejecutable.
  • Tu aplicación debe tener una clase principal que inicie un servidor web que responda a las solicitudes HTTP en el puerto especificado por la variable de entorno PORT, normalmente 8080.
  • Necesitas un archivo app.yaml para desplegar tu servicio en App Engine.
  • Puedes usar las dependencias incluyéndolas en el archivo pom.xml. Para obtener más información, consulta Usar bibliotecas de Java.

Crear una clase principal

El núcleo de tu servicio web es el servidor HTTP. El código de ejemplo de esta guía usa el framework Spring Boot para gestionar las solicitudes HTTP, pero puedes usar el framework web que quieras.

  1. Genera un proyecto de Spring Boot para Java que use el sistema de compilación Maven y que contenga la dependencia Spring Web. Para empezar, haz clic en el siguiente enlace:

    Ir a Spring Initializr

  2. En Spring Initializer, haz clic en el botón Generate (Generar) para generar y descargar tu proyecto.

  3. En el proyecto descargado, edita el archivo springboot/src/main/java/com/example/appengine/springboot/DemoApplication.java para añadir algunas importaciones de Java y un controlador REST hello:

    package com.example.appengine.springboot;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    @SpringBootApplication
    @RestController
    public class DemoApplication {
    public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
    }
    @GetMapping("/")
    public String hello() {
    return "Hello world!";
    }
    }
    

    La clase modificada es un controlador que inicia el servidor Tomcat insertado de Spring Boot y responde a las solicitudes GET en la ruta raíz ('/') con el texto "Hello world!".

Ejecutar el servidor de forma local

Para ejecutar el servidor de forma local, haz lo siguiente:

  1. Inicia un servidor web local con el complemento Maven de Spring Boot.

    mvn spring-boot:run
    
  2. En tu navegador web, introduce la siguiente dirección:
    http://localhost:8080

El mensaje Hello World de la aplicación de ejemplo se muestra en la página. En la ventana de la terminal, pulsa Ctrl+C para salir del servidor web.

Crea el archivo app.yaml

Para especificar la configuración de tu aplicación en el entorno de ejecución de App Engine, sigue estos pasos:

  1. Crea un archivo llamado app.yaml en el siguiente directorio:
    springboot/src/main/appengine/

  2. Añade el siguiente contenido al archivo:

    Java 21

    runtime: java21
    

    El archivo app.yaml también puede especificar ajustes de red, ajustes de escalado y más. Para obtener más información, consulta la referencia de app.yaml.

Si has usado el enlace Spring Initializr de arriba, ahora deberías tener una estructura de archivos como la siguiente:

  • springboot/
    • pom.xml
    • src/main/
      • appengine/
        • app.yaml
      • java/com/example/appengine/springboot/
        • DemoApplication.java

También puedes añadir al archivo pom.xml del proyecto el complemento de Maven que permite implementar la aplicación:

            <plugin>
                <groupId>com.google.cloud.tools</groupId>
                <artifactId>appengine-maven-plugin</artifactId>
                <version>2.8.1</version>
                <configuration>
                    <projectId>YOUR_PROJECT_NAME</projectId>
                    <version>YOUR_VERSION</version>
                    <promote>false</promote>
                </configuration>
            </plugin>

Pasos siguientes

Ahora que has creado un servidor web Java sencillo que escucha el puerto correcto y has especificado el tiempo de ejecución en un archivo app.yaml, ya puedes desplegar tu servicio en App Engine.