编写 Web 服务

本指南介绍如何编写要在 App Engine 标准环境中运行的 Java Web 服务。如需详细了解 Java 运行时及其工作原理,请参阅 Java 运行时环境

准备工作

如果您尚未准备:

  1. 为计划使用的 App Engine 运行时版本安装最新版本的 Java 开发工具包 (JDK)
  2. 下载安装 Apache Maven 以构建、运行和部署示例应用。

要点

  • App Engine 通过上传可执行的 JAR 应用来启动您的应用。
  • 您的应用必须具有一个主类,该类会启动一个 Web 服务器以响应由 PORT 环境变量指定的端口(通常为 8080)上的 HTTP 请求。
  • 您需要使用 app.yaml 文件以将服务部署到 App Engine。
  • 您可以在 pom.xml 文件中列出要使用的依赖项。如需了解详情,请参阅使用 Java 库

创建主类

Web 服务的核心是 HTTP 服务器。本指南中的示例代码使用 Spring Boot 框架来处理 HTTP 请求,您也可以自由使用自己偏好的 Web 框架。

  1. 生成使用 Maven 构建系统且包含 Spring Web 依赖项的 Java 版 Spring Boot 项目。如需开始使用,请点击以下链接:

    转到 Spring Initializr

  2. 在 Spring Initializer 中,点击生成按钮以生成并下载您的项目。

  3. 在下载的项目中,修改文件 springboot/src/main/java/com/example/appengine/springboot/DemoApplication.java 以添加一些 Java 导入和 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!";
    }
    }
    

    修改后的类是一个控制器,用于启动 Spring Boot 的嵌入式 Tomcat 服务器,并以文本“Hello world!”响应根路径 ('/') 的 GET 请求。

在本地运行服务器

要在本地运行服务器,请执行以下操作:

  1. 使用 Spring Boot Maven 插件启动本地 Web 服务器。

    mvn spring-boot:run
    
  2. 在网络浏览器中,输入以下地址:
    http://localhost:8080

页面中随即显示示例应用发出的 Hello World 消息。在终端窗口中,按 Ctrl+C 退出 Web 服务器。

创建 app.yaml 文件

如需在 App Engine 运行时环境中为应用指定设置,请执行以下操作:

  1. 在以下目录中创建一个名为 app.yaml 的文件:
    springboot/src/main/appengine/

  2. 将以下内容添加到文件中:

    Java 21

    runtime: java21
    

    app.yaml 文件还可以指定网络设置、扩缩设置等。如需了解详情,请参阅 app.yaml 参考文档

如果您使用了上面的 Spring Initializer 链接,则现在应该具有如下所示的文件结构:

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

您还可以在项目 pom.xml 中添加允许部署应用的 Maven 插件:

            <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>

后续步骤

现在您已创建了一个简单的 Java Web 服务器来监听正确的端口,并且已在 app.yaml 文件中指定了运行时,接下来便可以在 App Engine 上部署您的服务