红帽构建的 Quarkus 入门


Red Hat build of Quarkus 3.20

Red Hat Customer Content Services

摘要

本指南论述了如何使用 Apache Maven 创建简单的 Quarkus 应用程序。

向红帽构建的 Quarkus 文档提供反馈

要报告错误或改进文档,请登录您的红帽 JIRA 帐户并提交问题。如果您没有红帽 JIRA 帐户,系统会提示您创建一个帐户。

流程

  1. 单击以下链接 来创建 ticket
  2. Summary 中输入有关此问题的简单描述。
  3. 描述中提供问题或增强功能的详细描述。请包括有问题的文档 URL。
  4. Submit 创建问题并将其路由到适当的文档团队。

第 1 章 红帽构建的 Quarkus 入门

作为应用程序开发人员,您可以使用红帽构建的 Quarkus 来创建使用 OpenShift 环境上运行的 Java 编写的基于微服务的应用程序。Quarkus 应用程序可以在 Java 虚拟机(JVM)上运行,或编译到原生可执行文件。原生应用的内存占用量要小,启动时间要快于其 JVM 对应部分。

您可以使用以下方法之一创建 Quarkus 应用程序:

您可以开始使用 Quarkus,创建、测试、软件包和运行公开 hello HTTP 端点的简单 Quarkus 项目。为了演示依赖项注入,hello HTTP 端点使用 问候 Bean。

hello HTTP 端点的问候 bean
注意

有关开始练习的完整示例,请下载 Quarkus Quickstarts 存档或克隆 Quarkus Quickstarts Git 存储库,并进入 get -started 目录。

1.1. 关于红帽构建的 Quarkus

红帽构建的 Quarkus 是针对容器和 Red Hat OpenShift Container Platform 优化的 Kubernetes 原生 Java 堆栈。Quarkus 设计为使用流行的 Java 标准、框架和库,如 Eclipse MicroProfile、Eclipse Vert.x、Apache Camel、Apache Kafka、使用 Jakarta Persistence 和 Jakarta REST 的 Hibernate ORM。

作为开发人员,您可以选择 Java 应用程序所需的 Java 框架,您可以在 Java 虚拟机(JVM)模式下运行,或者以原生模式编译和运行。Quarkus 提供了构建 Java 应用程序的容器优先方法。容器先行方法促进了微服务和功能的容器化和高效执行。因此,Quarkus 应用程序的内存占用空间越小,启动时间也更快。

Quarkus 还通过统一配置、自动置备未配置服务、实时编码和持续测试等功能优化应用程序开发流程,从而为您提供对代码更改的即时反馈。

有关 Quarkus 社区版本与红帽构建的 Quarkus 之间的区别,请参阅 Quarkus 社区版本与红帽构建的 Quarkus 之间的差别。

1.2. 准备您的环境

在开始使用 Quarkus 前,您必须准备您的环境。

流程

  • 确认您的系统中完成了以下安装:

    • 已安装 OpenJDK 17 或 21,并设置 JAVA_HOME 环境变量来指定 Java SDK 的位置。

      • 要下载红帽 OpenJDK 的构建,请登录红帽客户门户网站并转至 软件下载
    • 已安装 Apache Maven 3.9.9。Apache Maven 位于 Apache Maven 项目网站
    • 可选 :如果要使用 Quarkus 命令行界面(CLI),请确保已安装它。

      • 有关如何安装 Quarkus CLI 的说明,请参阅 Quarkus CLI 中的特定于社区的信息。
重要

Quarkus CLI 主要用于开发目的,包括创建、更新和构建 Quarkus 项目等任务。但是,红帽不支持在生产环境中使用 Quarkus CLI。

1.2.1. 关于红帽构建的 Quarkus BOMs

从红帽构建的 Quarkus 2.2 开始,所有核心 Quarkus 扩展的依赖项版本都通过使用 com.redhat.quarkus.platform:quarkus-bom 文件来管理。

Bill of Materials (BOM)文件的目的是管理项目中的 Quarkus 工件版本,以便在项目中使用 BOM 时,您不需要指定哪些依赖项版本协同工作。相反,您可以将 Quarkus BOM 文件导入到 pom.xml 配置文件,其中依赖项版本包含在 < dependencyManagement> 部分中。因此,您不需要列出由 pom.xml 文件中的指定 BOM 管理的独立 Quarkus 依赖项版本。

要查看红帽构建的 Quarkus 中支持的扩展特定 BOM 的信息,请参阅 红帽构建的 Quarkus 组件详情

您只需要为应用程序中使用的平台成员扩展导入特定于成员的 BOM。因此,与单体单个 BOM 相比,管理的依赖项较少。由于每个特定于成员的 BOM 是通用 Quarkus BOM 的一个片段,所以您可以在不造成冲突的情况下以任何顺序导入 member BOM。

1.2.2. 关于 Apache Maven 和红帽构建的 Quarkus

Apache Maven 是一个分布式构建自动化工具,用于 Java 应用程序开发来创建、管理和构建软件项目。

要了解更多有关 Apache Maven 的信息,请参阅 Apache Maven 文档。

Maven 存储库

Maven 存储库存储 Java 库、插件和其他构建构件。默认公共存储库是 Maven 2 Central Repository,但存储库可以是私有和内部存储库,以在开发团队之间共享通用工件。存储库也可由第三方获得。

您可以将红帽托管的 Maven 存储库用于 Quarkus 项目。

Maven 插件

Maven 插件是 POM 文件的定义部分,该文件运行一个或多个任务。红帽构建的 Quarkus 应用程序使用以下 Maven 插件:

  • Quarkus Maven 插件(quarkus-maven-plugin) :启用 Maven 创建 Quarkus 项目,将应用程序打包到 JAR 文件,并提供 dev 模式。
  • Maven Surefire 插件(maven-surefire-plugin): 当 Quarkus 启用 测试 配置集时,在构建生命周期的测试阶段使用 Maven Surefire 插件来对应用程序运行单元测试。该插件生成包含测试报告的文本和 XML 文件。

1.2.3. 为在线存储库配置 Maven settings.xml 文件

要将红帽托管的 Quarkus 存储库与您的 Quarkus Maven 项目一起使用,请为您的用户配置 settings.xml 文件。与存储库管理器或共享服务器上的存储库一起使用的 Maven 设置可以提供更好的控制和管理性。

注意

当您通过修改 Maven settings.xml 文件配置存储库时,更改会应用到所有 Maven 项目。如果您只想将配置应用到特定的项目,请使用 the -s 选项并指定特定于项目的 settings.xml 文件的路径。

流程

  1. 在文本编辑器中或集成开发环境(IDE)中打开 Maven $HOME/.m2/settings.xml 文件。

    注意

    如果 $HOME/.m2/ 目录中没有 settings.xml 文件,请将 $MAVEN_HOME/conf/ 目录中的 settings.xml 文件复制到 $HOME/.m2/ 目录中。

  2. settings.xml 文件的 <profiles > 元素中添加以下行:

    <!-- Configure the Red Hat build of Quarkus Maven repository -->
    <profile>
      <id>red-hat-enterprise-maven-repository</id>
      <repositories>
        <repository>
          <id>red-hat-enterprise-maven-repository</id>
          <url>https://maven.repository.redhat.com/ga/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>red-hat-enterprise-maven-repository</id>
          <url>https://maven.repository.redhat.com/ga/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
    Copy to Clipboard Toggle word wrap
  3. settings.xml 文件的 < activeProfiles > 元素中添加以下行并保存文件。

    <activeProfile>red-hat-enterprise-maven-repository</activeProfile>
    Copy to Clipboard Toggle word wrap

您可以通过更改项目 POM 文件中的 Maven 配置,将 Quarkus 社区项目迁移到红帽构建的 Quarkus。

先决条件

  • 您有一个使用 Maven 构建的 Quarkus 项目,它依赖于 pom.xml 文件中的 Quarkus 社区工件

流程

  • 更改项目的 pom.xml 文件的 <properties > 部分中的以下值:

    • 将 < quarkus.platform.group-id> 属性的值改为 com.redhat.quarkus.platform
    • 将 < quarkus.platform.version> 属性的值改为 3.20.2.SP1-redhat-00003

      pom.xml

      <project>
        ...
        <properties>
           ...
           <quarkus.platform.group-id>com.redhat.quarkus.platform</quarkus.platform.group-id>
           <quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>
           <quarkus.platform.version>3.20.2.SP1-redhat-00003</quarkus.platform.version>
           ...
        </properties>
        ...
      </project>
      Copy to Clipboard Toggle word wrap

1.3. 配置红帽构建的 Quarkus 开发人员工具

通过使用 Quarkus 开发人员工具,您可以完成以下任务,例如:

  • 为应用程序创建 Maven 项目
  • 添加和配置要在应用程序中使用的扩展
  • 在 OpenShift 集群中部署应用程序

扩展 registry ( registry.quarkus.redhat.com )用于托管红帽提供的 Quarkus 扩展。您可以通过将 registry 添加到 registry 客户端配置文件中,配置 Quarkus 开发人员工具来访问此 registry 中的扩展。registry 客户端配置文件是一个 YAML 文件,其中包含 registry 列表。

注意
  • 默认 Quarkus registry 是 registry.quarkus.io; 通常,您不需要配置它。但是,如果用户提供自定义 registry 列表,且 registry.quarkus.io 不在其中,则不会启用 registry.quarkus.io
  • 确保您喜欢的 registry 首先出现在 registry 列表中。当 Quarkus 开发人员工具搜索 registry 时,它们从列表的顶部开始。

流程

  1. 打开包含扩展 registry 配置的 config.yaml 文件。首次配置扩展 registry 时,您可能需要在机器的 $HOME/.quarkus 目录中创建 config.yaml 文件。
  2. 将新 registry 添加到 config.yaml 文件中。例如:

    config.yaml

    registries:
      - registry.quarkus.redhat.com
      - registry.quarkus.io
    Copy to Clipboard Toggle word wrap

1.4. 创建 Getting Started 项目

通过创建 getting-started 项目,您可以使用简单的 Quarkus 应用程序启动并运行。您可以使用以下方法之一创建 getting-started 项目:

  • 使用 Apache Maven 和 Quarkus Maven 插件
  • 使用 code.quarkus.redhat.com 生成 Quarkus Maven 项目
  • 使用 Quarkus 命令行界面(CLI)

先决条件

流程

  • 根据您的要求,选择您要用来创建 获取的项目的方法

1.4.1. 使用 Apache Maven 创建 Getting Started 项目

您可以使用 Apache Maven 和 Quarkus Maven 插件创建一个 getting-started 项目。通过这个 get -started 项目,您可以使用简单的 Quarkus 应用程序启动并运行。

先决条件

流程

  1. 验证 Maven 是否使用 OpenJDK 17 或 21,Maven 版本是否为 3.9.9,并且 mvn 可从 PATH 环境变量访问:

    mvn --version
    Copy to Clipboard Toggle word wrap
  2. 如果前面的命令没有返回 OpenJDK 17 或 21,请将路径添加到 PATH 环境变量中,然后再次输入前面的命令。
  3. 生成项目:

    • 如果使用 Linux 或 Apple macOS,请输入以下命令:

      mvn com.redhat.quarkus.platform:quarkus-maven-plugin:3.20.2.SP1-redhat-00003:create \
          -DprojectGroupId=org.acme \
          -DprojectArtifactId=getting-started \
          -DplatformGroupId=com.redhat.quarkus.platform \
          -DplatformVersion=3.20.2.SP1-redhat-00003 \
          -DclassName="org.acme.quickstart.GreetingResource" \
          -Dpath="/hello"
      cd getting-started
      Copy to Clipboard Toggle word wrap
    • 如果使用 Microsoft Windows 命令行,请输入以下命令:

      mvn com.redhat.quarkus.platform:quarkus-maven-plugin:3.20.2.SP1-redhat-00003:create
      -DprojectGroupId=org.acme -DprojectArtifactId=getting-started
      -DplatformGroupId=com.redhat.quarkus.platform
      -DplatformVersion=3.20.2.SP1-redhat-00003
      -DclassName="org.acme.quickstart.GreetingResource"
      -Dpath="/hello"
      Copy to Clipboard Toggle word wrap
    • 如果使用 Microsoft Windows PowerShell,请输入以下命令:

      mvn com.redhat.quarkus.platform:quarkus-maven-plugin:3.20.2.SP1-redhat-00003:create
      "-DprojectGroupId=org.acme"
      "-DprojectArtifactId=getting-started"
      "-DplatformVersion=3.20.2.SP1-redhat-00003"
      "-DplatformGroupId=com.redhat.quarkus.platform"
      "-DclassName=org.acme.quickstart.GreetingResource"
      "-Dpath=/hello"
      Copy to Clipboard Toggle word wrap

      这些命令在 ./get-started 目录中创建以下元素

      • Maven 项目目录结构
      • /hello上公开的 org.acme.quickstart.GreetingResource 资源
      • 相关的单元测试,用于在原生模式和 JVM 模式中测试您的应用程序
      • 启动应用程序后可以访问 http://localhost:8080 的登录页面
      • src/main/docker 目录中的 Dockerfile 示例
      • 应用程序配置文件

        注意

        因为 Mandrel 不支持 macOS,所以您可以使用 Oracle GraalVM 在此操作系统上构建原生可执行文件。

        您还可以通过直接在裸机 Linux 或 Windows 发行版上使用 Oracle GraalVM 来构建原生可执行文件。有关此过程的更多信息,请参阅 Oracle GraalVM README 和发行注记。

        有关支持的配置的更多信息,请参阅 红帽构建的 Quarkus 支持的配置

  4. 创建目录结构后,在文本编辑器中打开 pom.xml 文件并检查文件的内容:

    pom.xml

    <project>
      ...
      <properties>
         ...
         <quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>
         <quarkus.platform.group-id>com.redhat.quarkus.platform</quarkus.platform.group-id>
         <quarkus.platform.version>3.20.2.SP1-redhat-00003</quarkus.platform.version>
         ...
      </properties>
      ...
      <dependencyManagement>
          <dependencies>
            <dependency>
              <groupId>${quarkus.platform.group-id}</groupId>
              <artifactId>${quarkus.platform.artifact-id}</artifactId>
              <version>${quarkus.platform.version}</version>
              <type>pom</type>
              <scope>import</scope>
            </dependency>
          </dependencies>
      </dependencyManagement>
      ...
      <build>
          ...
          <plugins>
            ...
            <plugin>
              <groupId>${quarkus.platform.group-id}</groupId>
              <artifactId>quarkus-maven-plugin</artifactId>
              <version>${quarkus.platform.version}</version>
              <extensions>true</extensions>
              <executions>
                <execution>
                  <goals>
                    <goal>build</goal>
                    <goal>generate-code</goal>
                    <goal>generate-code-tests</goal>
                  </goals>
                </execution>
              </executions>
            </plugin>
            ...
          </plugins>
          ...
      </build>
     ...
    </project>
    Copy to Clipboard Toggle word wrap

    pom.xml 文件的 <dependencyManagement > 部分包含 Quarkus BOM。因此,您不需要在 pom.xml 文件中列出单个 Quarkus 依赖项的版本。在此配置文件中,您还可以找到负责打包应用程序的 quarkus-maven-plugin 插件。

  5. 请注意 pom.xml 文件中的 quarkus-rest (以前称为 quarkus-resteasy-reactive)依赖项。此依赖项允许您使用 Jakarta REST 注解来开发 REST 应用程序:

    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-rest</artifactId>
    </dependency>
    Copy to Clipboard Toggle word wrap
    注意

    从红帽构建的 Quarkus 版本 3.15 开始,quarkus-resteasy-reactive 扩展被重命名为 quarkus-rest。使用 quarkus-resteasy-reactive 依赖项的应用程序会被邀请更新其依赖项。

  6. 查看 src/main/java/org/acme/quickstart/GreetingResource.java 文件:

    import jakarta.ws.rs.GET;
    import jakarta.ws.rs.Path;
    import jakarta.ws.rs.Produces;
    import jakarta.ws.rs.core.MediaType;
    
    @Path("/hello")
    public class GreetingResource {
    
        @GET
        @Produces(MediaType.TEXT_PLAIN)
        public String hello() {
            return "Hello from Quarkus REST";
        }
    }
    Copy to Clipboard Toggle word wrap

    此文件包含一个简单的 REST 端点,它将 Hello from Quarkus REST 返回为您发送到 /hello 端点的请求。

    注意

    使用 Quarkus 时,支持 Jakarta REST (以前称为 JAX-RS)的 Application 类,但并不需要。另外,默认情况下,只创建一个 GreetingResource 类实例,而不是每个请求一个。您可以使用不同的 *Scoped 注解来配置此功能,如 RequestScoped

验证

  1. 以 dev 模式编译和启动应用程序。如需更多信息,请参阅 编译和启动 Red Hat build of Quarkus Getting Started 项目
  2. 从 Quarkus CLI 软件包并运行 Getting Started 项目。如需更多信息,请参阅打包并运行红帽构建的 Quarkus 入门应用程序

作为应用程序开发人员,您可以使用 code.quarkus.redhat.com 应用程序生成 Quarkus Maven 项目,并自动添加和配置要在应用程序中使用的扩展。另外,code.quarkus.redhat.com 会自动管理将项目编译到原生可执行文件所需的配置参数。

您可以生成 Quarkus Maven 项目,包括以下活动:

  • 指定应用程序的基本详情
  • 选择您要包含在项目中的扩展
  • 使用项目文件生成可下载存档
  • 使用自定义命令编译和启动应用程序

先决条件

注意

Quarkus CLI 主要用于开发目的,包括创建、更新和构建 Quarkus 项目等任务。但是,红帽不支持在生产环境中使用 Quarkus CLI。

流程

  1. 在您的 Web 浏览器中,前往 https://code.quarkus.redhat.com
  2. 从可用版本列表中,code.quarkus.redhat.com 应用程序默认选择红帽构建的 Quarkus 的最新版本。

    注意

    code.quarkus.redhat.com 应用程序使用最新版本的红帽构建的 Quarkus,这是首选的选项。但是,在生成项目后,您可以根据需要手动更改为 pom.xml 文件中的更早的 BOM 版本,但不建议这样做。

  3. 指定项目的基本详情:

    code.quarkus.redhat.com 网站上的基本应用程序详情部分的截图
    1. 输入项目的组名称。名称格式遵循 Java 软件包命名约定;例如,org.acme
    2. 输入项目生成的 Maven 工件的名称,如 code-with-quarkus
    3. 选择您要用来编译和启动应用程序的构建工具。您选择的构建工具决定了以下设置:

      • 生成的项目的目录结构
      • 生成的项目中使用的配置文件的格式
      • 在生成项目后,用于编译和启动 code.quarkus.redhat.com 的应用程序的自定义构建脚本和命令

        注意

        红帽仅支持使用 code.quarkus.redhat.com 来创建 Quarkus Maven 项目。

  4. 指定应用程序项目的更多详情:

    1. 要显示包含更多应用程序详情的字段,请选择 More options

      code.quarkus.redhat.com 网站上的应用程序详情部分的截图,显示带有其他应用程序详情的扩展表单
    2. 输入您要用于项目生成的工件的版本。此字段的默认值为 1.0.0-SNAPSHOT。首选使用 语义版本,但您可以选择指定不同类型的版本。
    3. 选择是否希望 code.quarkus.redhat.com 将入门代码添加到项目中。将标记为"STARTER-CODE"的扩展添加到项目中时,您可以启用此选项,以便在生成项目时自动为这些扩展创建示例类和资源文件。但是,如果您没有添加提供示例代码的任何扩展,这个选项不会影响生成的项目。
    注意

    code.quarkus.redhat.com 应用程序自动使用最新版本的红帽构建的 Quarkus。但是,如果您需要,可以在生成项目后手动更改为 pom.xml 文件中的较早 BOM 版本,但不建议这样做。

  5. 选择要使用的扩展。Quarkus 应用程序包含您选择的扩展作为依赖项。Quarkus 平台还确保这些扩展与将来的版本兼容。

    重要

    不要在同一项目中使用 quarkus-restquarkus-resteasy 扩展。两者都提供相似的功能,但它们的运作方式有所不同。使用 quarkus-rest 是首选的。

    扩展旁边的 quark 图标( quark )表示扩展是红帽构建的 Quarkus 平台版本的一部分。红帽更喜欢使用来自同一平台的扩展,因为它们经过测试和验证,因此更易于使用和升级。

    对于使用"STARTER-CODE"标记的扩展,您可以启用 选项自动生成初学者代码。

    Screenshot of the list of extensions at the code.quarkus.redhat.com site that you can add to your project

  6. 要确认您的选择,请选择 Generate your application。出现的对话框显示以下项目:

    • 下载包含您生成的项目的存档的链接
    • 您可以使用该命令编译和启动应用程序
  7. 要使用生成的项目文件将存档保存到机器中,请选择 Download the ZIP
  8. 提取存档的内容。

验证

  1. 以 dev 模式编译和启动应用程序。如需更多信息,请参阅 编译和启动 Red Hat build of Quarkus Getting Started 项目
  2. 从 Quarkus CLI 软件包并运行 Getting Started 项目。如需更多信息,请参阅打包并运行红帽构建的 Quarkus 入门应用程序
1.4.2.1. 红帽构建的 Quarkus 扩展的支持等级

红帽为 code.quarkus.redhat.com 上可用的扩展提供了 不同的 支持,供您添加到 Quarkus 项目中。每个扩展名称旁边的标签表示支持级别。

重要

红帽不支持在生产环境中使用的未标记扩展。

Screenshot of an expanded overflow menu next to one of the extensions on code.quarkus.redhat.com showing the custom commands that you can copy

红帽为红帽构建的 Quarkus 扩展提供以下级别的支持:

Expand
表 1.1. 红帽为红帽构建的 Quarkus 扩展提供的支持级别
支持级别描述

支持

红帽完全支持在生产环境中使用的扩展。

TECH-PREVIEW

红帽对在 技术预览功能下在生产环境中的扩展提供支持 - 支持范围

弃用

红帽计划使用提供相同功能的最新技术或实施来替换扩展。

DEV-SUPPORT

红帽不支持在生产环境中使用的扩展,但红帽开发人员支持他们在开发新应用程序时提供的核心功能。

实验性

红帽不支持在生产环境中使用的扩展。需要早期反馈以进一步成熟扩展提议。无法保证平台的稳定性或长期包含。

预览

红帽不支持在生产环境中使用的扩展。只在 Quarkus 社区版本中提供扩展。

通过单击每个扩展旁边的箭头图标(InventoryService),您可以扩展溢出菜单来访问该扩展的进一步操作。例如:

  • 在命令行中使用 Quarkus Maven 插件将扩展添加到现有项目
  • 复制 XML 片段,将扩展添加到项目的 pom.xml 文件中
  • 获取每个扩展的 groupIdartifactId 和版本
  • 打开扩展指南

1.4.3. 使用 quarkus CLI 创建 Getting Started 项目

您可以使用 Quarkus 命令行界面(CLI)创建 获取 的项目。

使用 Quarkus CLI,您可以创建项目、管理扩展并运行构建和开发命令。

重要

Quarkus CLI 主要用于开发目的,包括创建、更新和构建 Quarkus 项目等任务。但是,红帽不支持在生产环境中使用 Quarkus CLI。

先决条件

流程

  1. 要生成项目,在命令终端中输入以下命令:

    quarkus create && cd code-with-quarkus
    Copy to Clipboard Toggle word wrap
    注意

    您还可以指定 'app' 子命令,例如 quarkus create app。但是,这不是强制这样做,因为如果没有指定 'app' 子命令会表示它。

    使用此命令,您可以在当前工作目录的名为 'code-with-quarkus' 的 文件夹中创建 Quarkus 项目。

  2. 默认情况下,groupIdartifactIdversion 属性使用以下默认值指定:

    • groupId='org.acme'
    • artifactId='code-with-quarkus'
    • version='1.0.0-SNAPSHOT'

      要更改 groupId,artifactId, 和 version 属性的值,请发出 quarkus create 命令并在 CLI 中指定以下语法:

      groupId:artifactId:version

      例如,quarkus create app mygroupId:myartifactid:version

    注意

    要查看所有可用 Quarkus 命令的信息,请指定 help 参数:

    quarkus --help
    Copy to Clipboard Toggle word wrap
  3. 在文本编辑器中查看 src/main/java/org/acme/GreetingResource.java 文件:

    package org.acme;
    
    import jakarta.ws.rs.GET;
    import jakarta.ws.rs.Path;
    import jakarta.ws.rs.Produces;
    import jakarta.ws.rs.core.MediaType;
    
    @Path("/hello")
    public class GreetingResource {
    
        @GET
        @Produces(MediaType.TEXT_PLAIN)
        public String hello() {
            return "Hello from Quarkus REST";
        }
    }
    Copy to Clipboard Toggle word wrap

    此文件包含一个简单的 REST 端点,它将 Hello from Quarkus REST 返回为您发送到 /hello 端点的请求。

验证

  1. 以 dev 模式编译和启动应用程序。如需更多信息,请参阅 编译和启动 Red Hat build of Quarkus Getting Started 项目
  2. 从 Quarkus CLI 软件包并运行 Getting Started 项目。如需更多信息,请参阅打包并运行红帽构建的 Quarkus 入门应用程序

创建 Quarkus Getting Started 项目后,您可以编译 Hello 应用程序,并验证 hello 端点是否返回 "Hello from Quarkus REST

此流程使用 Quarkus 内置 dev 模式,因此您可以在应用程序运行时更新应用程序源和配置。您所做的更改出现在正在运行的应用程序中。

注意

用于编译 Quarkus Hello 应用的命令取决于您在机器上安装的开发人员工具。

先决条件

  • 您已创建了 Quarkus Getting Started 项目。

流程

  1. 前往 项目目录。
  2. 使用以下方法之一在 dev 模式中编译 Quarkus Hello 应用程序,具体取决于您要使用的开发人员工具:

    • 如果要使用 Apache Maven,请输入以下命令:

      mvn quarkus:dev
      Copy to Clipboard Toggle word wrap
    • 如果要使用 Quarkus 命令行界面(CLI),请输入以下命令:

      quarkus dev
      Copy to Clipboard Toggle word wrap
    • 如果要使用 Maven 打包程序,请输入以下命令:

      ./mvnw quarkus:dev
      Copy to Clipboard Toggle word wrap

      预期输出

      以下摘录显示了预期的输出示例:

      INFO  [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated.
      INFO  [io.quarkus] (Quarkus Main Thread) Installed features: [cdi, rest, smallrye-context-propagation, vertx]
      Copy to Clipboard Toggle word wrap

验证

  • 要向应用程序提供的端点发送请求,请在新的终端窗口中输入以下命令:

    curl -w "\n" http://localhost:8080/hello
    Hello from Quarkus REST
    Copy to Clipboard Toggle word wrap
    注意

    "\n" 属性会在 命令的输出前自动添加新行,这样可防止您的终端打印 '%' 字符,或者将结果和下一个 shell 提示符放在同一行中。

1.6. 使用红帽构建的 Quarkus 依赖项注入

通过依赖项注入,您可以完全独立于任何客户端使用的方式使用服务。它将客户端依赖项的创建与客户端的行为分开,这使得程序设计能够松散耦合。

红帽构建的 Quarkus 中的依赖关系注入基于 Quarkus ArC,它是一个基于上下文和依赖注入(CDI)的构建构建型依赖关系注入解决方案,专为 Quarkus 架构量身定制。因为 ArC 是 quarkus-rest 的传输依赖项,因为 quarkus-rest 是您的项目的依赖项,所以 ArC 已下载。

先决条件

  • 您已创建了 Quarkus Getting Started 项目。

流程

  1. 要修改应用程序并添加 companion bean,请使用以下内容创建 src/main/java/org/acme/quickstart/GreetingService.java 文件:

    package org.acme.quickstart;
    
    import jakarta.enterprise.context.ApplicationScoped;
    
    @ApplicationScoped
    public class GreetingService {
    
        public String greeting(String name) {
            return "hello " + name;
        }
    
    }
    Copy to Clipboard Toggle word wrap
  2. 编辑 src/main/java/org/acme/quickstart/GreetingResource.java 以注入 GreetingService,并使用它来创建新端点:

    package org.acme.quickstart;
    
    import jakarta.inject.Inject;
    import jakarta.ws.rs.GET;
    import jakarta.ws.rs.Path;
    import jakarta.ws.rs.Produces;
    import jakarta.ws.rs.core.MediaType;
    
    @Path("/hello")
    public class GreetingResource {
    
        @Inject
        GreetingService service;
    
        @GET
        @Produces(MediaType.TEXT_PLAIN)
        @Path("/greeting/{name}")
        public String greeting(String name) {
            return service.greeting(name);
        }
    
        @GET
        @Produces(MediaType.TEXT_PLAIN)
        public String hello() {
            return "Hello from Quarkus REST";
        }
    }
    Copy to Clipboard Toggle word wrap
  3. 如果您停止了应用程序,请输入以下命令之一重启它:

    • 使用 Apache Maven:

      mvn quarkus:dev
      Copy to Clipboard Toggle word wrap
    • 使用 Quarkus CLI:

      quarkus dev
      Copy to Clipboard Toggle word wrap
    • 使用 Maven 打包程序:

      ./mvnw quarkus:dev
      Copy to Clipboard Toggle word wrap
  4. 要验证端点是否返回 hello quarkus,请在新的终端窗口中输入以下命令:

    curl -w "\n" http://localhost:8080/hello/greeting/quarkus
    hello quarkus
    Copy to Clipboard Toggle word wrap

1.7. 测试您的红帽构建的 Quarkus 应用程序

编译 Quarkus Getting Started 项目后,您可以通过使用 JUnit 5 框架测试应用程序来验证它是否按预期运行。

注意

或者,您可以启用持续测试 Quarkus 应用程序。如需更多信息,请参阅启用和运行持续测试

Quarkus 项目在 pom.xml 文件中生成以下两个测试依赖项:

  • quarkus-junit5: 测试必需,因为它提供了控制 JUnit 5 测试框架的 @QuarkusTest 注释。
  • rest-assured: 不需要使用 rest-assured 依赖项,因为它提供了一种测试 HTTP 端点的便捷方法,它已被集成。rest-assured 依赖项会自动设置正确的 URL,因此不需要配置。

pom.xml 文件示例:

<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-junit5</artifactId>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>io.rest-assured</groupId>
    <artifactId>rest-assured</artifactId>
    <scope>test</scope>
</dependency>
Copy to Clipboard Toggle word wrap
注意

这些测试使用 REST 评估框架,但如果您愿意,您可以使用不同的库。

先决条件

流程

  1. 打开生成的 pom.xml 文件并查看内容:

    <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>${surefire-plugin.version}</version>
        <configuration>
           <systemPropertyVariables>
             <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
             <maven.home>${maven.home}</maven.home>
           </systemPropertyVariable>
        </configuration>
    </plugin>
    Copy to Clipboard Toggle word wrap

    请注意以下属性的值:

    • 设置了 java.util.logging.manager 系统属性,以确保您的应用程序在测试中使用正确的日志管理器。
    • maven.home 属性指向 settings.xml 文件的位置,您可以在其中存储您要应用到项目的自定义 Maven 配置。
  2. 编辑 src/test/java/org/acme/quickstart/GreetingResourceTest.java 文件,以匹配以下内容:

    package org.acme.quickstart;
    
    import io.quarkus.test.junit.QuarkusTest;
    import org.junit.jupiter.api.Test;
    
    import java.util.UUID;
    
    import static io.restassured.RestAssured.given;
    import static org.hamcrest.CoreMatchers.is;
    
    @QuarkusTest
    public class GreetingResourceTest {
    
        @Test
        public void testHelloEndpoint() {
            given()
              .when().get("/hello")
              .then()
                 .statusCode(200)
                 .body(is("Hello from Quarkus REST"));
        }
    
        @Test
        public void testGreetingEndpoint() {
            String uuid = UUID.randomUUID().toString();
            given()
              .pathParam("name", uuid)
              .when().get("/hello/greeting/{name}")
              .then()
                .statusCode(200)
                .body(is("hello " + uuid));
        }
    
    }
    Copy to Clipboard Toggle word wrap
    注意

    通过使用 QuarkusTest 运行程序,您可以指示 JUnit 启动应用,然后再启动测试。

  3. 使用以下方法之一运行测试:

    • 使用 Apache Maven:

      mvn test
      Copy to Clipboard Toggle word wrap
    • 使用 Quarkus CLI:

      quarkus test
      Copy to Clipboard Toggle word wrap
    • 使用 Maven 打包程序:

      ./mvnw test
      Copy to Clipboard Toggle word wrap
      注意

      您还可以从 IDE 运行测试。如果这样做,请先停止应用程序。

      默认情况下,测试在端口 8081 上运行,因此它们不会与正在运行的应用程序冲突。在 Quarkus 中,RestAssured 依赖项被配置为使用此端口。

      注意

      如果要使用其他客户端,请使用 @TestHTTPResource 注释,将已测试应用的 URL 直接注入到 Test 类中的字段中。此字段可以是 StringURLURI。您还可以在 @TestHTTPResource 注释中输入测试路径。例如,要测试公开给 /foo 的资源,请在测试中添加以下行:

      @TestHTTPResource("/foo")
      URL testUrl;
      Copy to Clipboard Toggle word wrap
  4. 如有必要,在 quarkus.http.test-port 配置属性中指定测试端口。

1.8. 启用并运行持续测试

使用红帽构建的 Quarkus,您可以在开发应用程序时持续测试您的代码更改。Quarkus 提供持续测试功能,您可以在进行后立即运行,并将更改保存到代码。

运行连续测试时,在启动应用程序后测试会暂停。在应用程序启动时,您可以立即恢复测试。Quarkus 应用程序决定运行哪个测试,以便测试仅在已更改的代码上运行。

Quarkus 的持续测试功能会被默认启用。您可以通过将 src/main/resources/application.properties 文件中的 quarkus.test.continuous-testing 属性设置为 disabled 来禁用连续测试。

注意

如果您之前禁用了持续测试,并希望再次启用它,您必须重启 Quarkus 应用程序,然后才能开始测试。

先决条件

流程

  1. 启动 Quarkus 应用程序。

    • 如果您使用 code.quarkus.redhat.com 应用程序或 Quarkus CLI 创建 Getting Started 项目,则在生成项目时会提供 Maven 打包程序。在项目目录中输入以下命令:

      ./mvnw quarkus:dev
      Copy to Clipboard Toggle word wrap
    • 如果您使用在您的机器上安装的 Apache Maven 创建 Getting Started 项目,请输入以下命令:

      mvn quarkus:dev
      Copy to Clipboard Toggle word wrap
    • 如果您在 dev 模式下运行持续测试并使用 Quarkus CLI,请输入以下命令:

      quarkus dev
      Copy to Clipboard Toggle word wrap
  2. 在生成的输出日志中查看测试状态的详情。

    注意

    要查看输出日志,您可能需要滚动到屏幕的底部。

    • 启用持续测试后,会显示以下信息:

      Press [e] to edit command line args (currently ''), [r] to re-run, [o] Toggle test output, [:] for the terminal, [h] for more options>
      Copy to Clipboard Toggle word wrap
    • 当持续测试暂停时,会显示以下信息:

      Press [e] to edit command line args (currently ''), [r] to resume testing, [o] Toggle test output, [:] for the terminal, [h] for more options>
      Copy to Clipboard Toggle word wrap
      注意

      默认情况下,在启用连续测试后,测试会在启动应用程序后暂停。要查看用于控制如何运行测试的键盘命令,请查看 命令来控制连续测试

  3. 要开始运行测试,请在键盘上按 r 键。
  4. 查看更新的输出日志,以监控测试状态和测试结果,检查测试统计信息,并获取后续操作的指导。例如:

    All 2 tests are passing (0 skipped), 2 tests were run in 2094ms. Tests completed at 14:45:11.
    Press [e] to edit command line args (currently ''), [r] to re-run, [o] Toggle test output, [:] for the terminal, [h] for more options>
    Copy to Clipboard Toggle word wrap

验证

  1. 进行代码更改。例如,在文本编辑器中,打开 src/main/java/org/acme/quickstart/GreetingsResource.java 文件。
  2. 更改"hello"端点,以返回 "Hello world" 并保存文件。

    import jakarta.ws.rs.GET;
    import jakarta.ws.rs.Path;
    import jakarta.ws.rs.Produces;
    import jakarta.ws.rs.core.MediaType;
    
    @Path("/hello")
    public class GreetingResource {
    
        @GET
        @Produces(MediaType.TEXT_PLAIN)
        public String hello() {
            return "Hello world";
        }
    }
    Copy to Clipboard Toggle word wrap
  3. 验证 Quarkus 是否立即重新运行测试来测试更改的代码。
  4. 查看输出日志,以检查测试结果。在本例中,测试会检查更改的字符串是否包含 "Hello from Quarkus REST" 值。测试失败,因为字符串已更改为 "Hello world"。

    2024-09-26 11:05:45,911 ERROR [io.qua.test] (Test runner thread) Test GreetingResourceTest#testHelloEndpoint() failed: java.lang.AssertionError: 1 expectation failed.
    Response body doesn't match expectation.
    Expected: is "Hello from Quarkus REST"
      Actual: Hello world
            at io.restassured.internal.ValidatableResponseOptionsImpl.body(ValidatableResponseOptionsImpl.java:238)
            at org.acme.quickstart.GreetingResourceTest.testHelloEndpoint(GreetingResourceTest.java:20)
    --
    1 test failed (1 passing, 0 skipped), 2 tests were run in 2076ms. Tests completed at 15:03:45.
    Press [e] to edit command line args (currently ''), [r] to re-run, [o] Toggle test output, [:] for the terminal, [h] for more options>
    Copy to Clipboard Toggle word wrap
  5. 要退出连续测试,请在键盘上按 Ctrl-Cq
注意

如果您将值重新更改为 "Hello from Quarkus REST",则测试会自动再次运行。

1.8.1. 控制连续测试的命令

您可以使用键盘上的热键命令控制您的选项以进行持续测试。要查看完整的命令列表,请在键盘上按"h"可用的选项如下:

Expand
命令描述

r

重新运行所有测试。

f

重新运行失败的所有测试。

b

切换"broken"模式。只有之前失败的测试才会运行,即使其他测试会受到您的代码更改的影响。如果您更改许多测试所使用的代码,但只想查看失败的测试,则此选项可能很有用。

v

打印输出详细描述了从上次测试运行到控制台的测试失败。如果上一次测试运行以来有相当多的控制台输出,此选项可能很有用。

p

临时暂停运行测试。如果您进行很多代码更改,这可能很有用,但在完成更改后不想获得测试反馈。

q

退出连续测试。

o

将测试输出打印到控制台。这默认是禁用的。禁用测试输出后,输出会被过滤并保存,但不会在控制台中显示。您可以查看 Dev UI 上的测试输出。

i

切换基于检测的重新加载。使用这个选项不会影响测试,但不允许进行实时重新加载。这可用于避免在更改不会影响类结构时重新启动。

l

切换实时重新加载。使用这个选项不会影响测试,但您可以打开和关闭实时重新载入。

s

强制重启。使用此选项,您可以强制扫描已更改的文件和包含更改的实时重新加载。请注意,即使没有代码更改,且禁用了 live reload,应用程序仍会重启。

编译 Quarkus Getting Started 项目后,您可以将其打包在 JAR 文件中,并从命令行运行。

注意

用于打包并运行 Quarkus 入门应用程序的命令取决于您在机器上安装的开发人员工具。

先决条件

  • 您已编译了 Quarkus Getting Started 项目。

流程

  1. 前往 getting-started 项目目录。
  2. 要打包 Quarkus Getting Started 项目,请使用以下方法之一,具体取决于您要使用的开发人员工具:

    • 如果要使用 Apache Maven:

      mvn package
      Copy to Clipboard Toggle word wrap
    • 如果要使用 Quarkus CLI:

      quarkus build
      Copy to Clipboard Toggle word wrap
    • 如果您希望使用 Maven 打包程序:

      ./mvnw package
      Copy to Clipboard Toggle word wrap

      这个命令在 /target 目录中生成以下 JAR 文件:

      • getting-started-1.0-0-SNAPSHOT.jar: 包含项目的类和资源。这是 Maven 构建生成的常规工件。
      • quarkus-app/quarkus-run.jar: Is an executable JAR 文件。此文件不是 uber-JAR 文件。依赖项复制到 target/quarkus-app/lib 目录中。
  3. 要启动应用程序,请输入以下命令:

    java -jar target/quarkus-app/quarkus-run.jar
    Copy to Clipboard Toggle word wrap
    注意
    • 在运行应用程序前,请确保停止 dev 模式、(press CTRL+C),或者您将存在端口冲突。
    • quarkus-run.jar 文件中的 MANIFEST.MF 文件的 Class-Path 条目会明确列出 lib 目录中的 JAR 文件。如果要从另一个位置部署应用程序,您必须部署整个 quarkus-app 目录。
重要

各种红帽构建的 Quarkus 扩展贡献了非应用程序端点,它们提供有关应用程序的不同类型的信息。例如,quarkus-smallrye-healthquarkus-micrometer-registry-prometheusquarkus-smallrye-openapi 扩展。

您可以通过指定 /q 前缀来访问这些非应用程序端点。例如: /q/health/q/metrics/q/openapi

对于可能出现安全风险的非应用程序端点,您可以选择使用专用管理界面在不同的 TCP 端口下公开这些端点。如需更多信息,请参阅 Quarkus 管理界面参考指南

1.10. JVM 和原生构建模式

您可以编译经典 Java 虚拟机(JVM)应用程序,或使用 Mandrel 或 GraalVM 的原生 镜像工具编译原生 应用程序。

1.10.1. 将应用程序编译为典型的 JVM 应用

您可以将应用程序编译为 JVM 应用。此选项基于 quarkus.package.jar.type 配置属性。将此属性设置为指定要生成的 JAR 文件格式:

  • fast-jar: 为 Quarkus 优化的 JAR 文件和默认配置选项。启动时间稍快,并且稍微降低内存用量。
  • legacy-jar: 典型的 JAR 文件。此文件已弃用,而不是首选选项。
  • mutable-jar: 用于原生镜像容器构建的 JAR 文件。
  • uber-jar: 单个独立 JAR 文件。

    这些文件在所有操作系统上工作,构建要快于原生映像。

1.10.2. 将应用程序编译到原生镜像中

要构建原生镜像,请将 quarkus.native.enabled 设置为 true

这样,您可以创建一个专门用于您选择的操作系统(如 Windows 的 .exe 文件)的可执行二进制文件。与 JAVA JAR 文件相比,这些文件的启动时间和较少的 RAM 消耗要快,但它们的编译需要几分钟。此外,使用原生二进制文件可以的最大吞吐量低于常规 JVM 应用,因为缺少 profile-guided 优化。

  • 使用 Mandrel

    Mandrel 是红帽构建的 Quarkus 的 GraalVM 专用发行版,也是构建目标 Linux 容器化环境的原生可执行文件的首选方法。虽然 Mandrel 方法非常适合在容器化环境中嵌入编译输出,但只会提供一个 Linux64 位原生可执行文件。因此,.exe 等结果不是一个选项。

    鼓励 Mandrel 用户使用容器来构建其原生可执行文件。

    要使用官方 Mandrel 镜像,通过本地安装 Docker 或 Podman 将应用程序编译为原生模式,请输入具有以下属性的 mvn package 命令:

  • 使用 Maven:

    • 对于 Docker:

      ./mvnw package -Dnative -Dquarkus.native.enabled=true
      Copy to Clipboard Toggle word wrap
      ./mvnw package -Dnative -Dquarkus.native.container-build=true
      Copy to Clipboard Toggle word wrap
      ./mvnw package -Dnative -Dquarkus.native.builder-image=registry.access.redhat.com/quarkus/mandrel-for-jdk-21-rhel8:23.1
      Copy to Clipboard Toggle word wrap
    • 对于 Podman (可选):

      红帽构建的 Quarkus 会自动检测容器运行时。但是,如果要强制使用特定的容器运行时,请手动指定一个。

      ./mvnw package -Dnative -Dquarkus.native.enabled=true -Dquarkus.native.container-build=true -Dquarkus.native.container-runtime=podman
      Copy to Clipboard Toggle word wrap
      ./mvnw package -Dnative -Dquarkus.native.container-build=true -Dquarkus.native.container-runtime=podman
      Copy to Clipboard Toggle word wrap
      ./mvnw package -Dnative -Dquarkus.native.builder-image=registry.access.redhat.com/quarkus/mandrel-for-jdk-21-rhel8:23.1 Dquarkus.native.container-build=true -Dquarkus.native.container-runtime=podman
      Copy to Clipboard Toggle word wrap

      步骤结果

      这些命令在目标目录中创建一个 *-runner 二进制文件,在其中应用以下内容:

      • *-runner 文件是 Quarkus 生成的构建原生二进制文件。
      • 目标目录 是构建 Maven 应用程序时 Maven 创建的目录。
  • 使用 GraalVM

    因为 Mandrel 不支持 macOS,所以您可以使用 Oracle GraalVM 在此操作系统上构建原生可执行文件。

    您还可以通过直接在裸机 Linux 或 Windows 发行版上使用 Oracle GraalVM 来构建原生可执行文件。

    有关如何使用 Oracle GraalVM 构建原生可执行文件的详情,请参考 将 Quarkus 应用程序的红帽构建的 Quarkus 应用程序编译到原生可执行文件

在原生模式中,应用构建的输出是一个独立于平台的原生二进制文件,而不是压缩或归档 JAR 文件。有关原生模式与 Java 虚拟机(JVM)不同的更多信息,请参阅 JVM 和原生构建模式

先决条件

  • 已安装 OpenJDK 17 或 21,并设置 JAVA_HOME 环境变量来指定 Java SDK 的位置。
  • 已安装 Apache Maven 3.9.9。
  • 您有一个正常工作的 C 开发环境
  • 您有可正常工作的容器运行时,如 Docker 或 Podman。
  • 可选 :如果要使用 Quarkus 命令行界面(CLI),请确保已安装它。

    • 有关如何安装 Quarkus CLI 的说明,请参阅 Quarkus CLI 中的特定于社区的信息。
  • 您已克隆并编译了 Quarkus Getting Started 项目
  • 您已下载并安装了 GraalVM 的社区或企业版本。

    • 要下载并安装社区或 GraalVM 的企业级版本,请参阅官方 使用 GraalVM 文档。
    • 或者,使用特定于平台的安装工具,如 sdkmanhomebrewscoop
注意

虽然您可以使用 GraalVM 的社区版本完成 Getting Started 指南中的所有流程,但红帽构建的 Quarkus 生产环境中不支持 GraalVM 社区版本。如需更多信息,请参阅将 红帽构建的 Quarkus 应用程序编译到原生可执行文件

流程

  1. 通过将 GRAALVM_HOME 环境变量设置为 GraalVM 安装目录来配置运行时环境。例如:

    export GRAALVM_HOME=$HOME/Development/graalvm/
    Copy to Clipboard Toggle word wrap
    • 在 macOS 中,将变量设置为 Home 子目录:

      export GRAALVM_HOME=$HOME/Development/graalvm/Contents/Home/
      Copy to Clipboard Toggle word wrap
    • 在 Windows 服务器上,使用 Control Panel 设置环境变量。
  2. 安装 native-image 工具:

    ${GRAALVM_HOME}/bin/gu install native-image
    Copy to Clipboard Toggle word wrap
  3. JAVA_HOME 环境变量设置为 GraalVM 安装目录:

    export JAVA_HOME=${GRAALVM_HOME}
    Copy to Clipboard Toggle word wrap
  4. 将 GraalVM bin 目录添加到路径中:

    export PATH=${GRAALVM_HOME}/bin:$PATH
    Copy to Clipboard Toggle word wrap
  5. 进入 Getting Started 项目文件夹:

    cd getting-started
    Copy to Clipboard Toggle word wrap
  6. 使用以下方法之一编译原生镜像:

    • 使用 Maven:

      mvn clean package -Pnative
      Copy to Clipboard Toggle word wrap
    • 使用 Quarkus CLI:

      quarkus build --native
      Copy to Clipboard Toggle word wrap
    • 使用 Maven 打包程序:

      ./mvnw clean package -Pnative
      Copy to Clipboard Toggle word wrap

验证

  1. 启动应用程序:

    ./target/getting-started-1.0.0-SNAPSHOT-runner
    Copy to Clipboard Toggle word wrap
  2. 观察日志消息,并验证它是否包含 原生 一词:

    2024-09-25 08:35:51,505 INFO [io.quarkus] (main) getting-started 1.0.0-SNAPSHOT native (powered by Quarkus 3.20.2.redhat-00004) started in 0.043s.
    Listening on: http://0.0.0.0:8080
    Copy to Clipboard Toggle word wrap

法律通告

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部