Red Hat build of Quarkus 2.13 发行注记


Red Hat build of Quarkus 2.13

摘要

本文档包含 Red Hat build of Quarkus 2.13 发行注记。

第 1 章 Red Hat build of Quarkus 2.13 发行注记

本发行注记提供有关红帽构建的 Quarkus 2.13 的新功能、重要的技术更改、技术预览功能、错误修复、已知问题以及相关公告的信息。另外还提供了有关升级和向后兼容性的信息,可帮助您从早期版本过渡。

使开源包含更多

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息

1.1. 关于红帽构建的 Quarkus

Red Hat build of Quarkus 是一个 Kubernetes 原生 Java 堆栈,用于容器和 Red Hat OpenShift Container Platform。Quarkus 设计为使用流行的 Java 标准、框架和库,如 Eclipse MicroProfile、Eclipse Vert.x、Apache Camel、Apache Kafka、Hibernate ORM 与 Java Persistence API (EJB)和 RESTEasy (JAX-RS)等。

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

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

有关 Quarkus 社区版本和红帽构建的 Quarkus 之间的差异的详情,请参考 Quarkus 社区版本和红帽构建的 Quarkus 之间的 Differences。

作为应用程序开发人员,您可以访问两个不同的 Quarkus 版本: Quarkus 社区版本和产品化版本,Red Hat build of Quarkus (RHBQ)。

下表描述了 Quarkus 社区版本和 RHBQ 之间的区别。

Expand
功能Quarkus 社区版本Red Hat build of Quarkus 版本描述

访问最新的社区功能

使用 Quarkus 社区版本,您可以访问最新的功能开发。

红帽没有发布 RHBQ,以与社区版本的每个版本对应。RHBQ 功能版本的节奏大约每 6 个月。

来自红帽的企业支持

红帽只为 RHBQ 提供企业支持。要报告 Quarkus 社区版本的问题,请参阅 quarkusio/quarkus - issues

访问长期支持

RHBQ 的每个功能发行版本都会完全支持在下一个功能发布前一年内。当功能版本被新版本取代时,红帽将继续提供后续的 6 个月的维护支持。如需更多信息,请参阅 支持和兼容性

常见的漏洞和风险(CVE)修复和程序错误修复被向后移植到早期版本

在 RHBQ 中,所选的 CVE 修复和程序错误修复会定期向后移植到支持的流中。在 Quarkus 社区版本、CVE 和程序错误修复中,通常仅在最新版本中提供。

使用 Red Hat OpenShift Container Platform 和 Red Hat Enterprise Linux (RHEL)测试并验证

RHBQ 使用 Red Hat OpenShift Container Platform 和 RHEL 构建、测试并验证。红帽根据您的订阅协议为支持的配置和经过测试的集成提供生产和开发支持。如需更多信息,请参阅 Red Hat build of Quarkus 支持的配置

使用安全构建系统从源构建

在 RHBQ 中,红帽使用安全软件交付提供核心平台和所有支持的扩展,这意味着它们从源构建、扫描以了解安全问题,以及验证的许可证使用情况。

访问 JDK 和 GraalVM Mandrel 发行版的支持

RHBQ 支持经过认证的 OpenJDK 构建和经认证的原生可执行构建器。请参阅以下接受。如需更多信息,请参阅 支持的配置

重要

Red Hat build of Quarkus 支持使用 红帽构建的 Quarkus 原生构建器镜像构建原生 Linux 可执行文件,这是 Mandrel 的产品化分发。

如需更多信息,请参阅将 Quarkus 应用程序编译到原生可执行文件。使用红帽构建的 Quarkus 不支持使用 Oracle GraalVM 社区版(CE)、Mael 社区版本或任何其他 GraalVM 发行版构建原生可执行文件。

1.3. 新功能、增强功能和技术变化

本节概述了红帽构建的 Quarkus 2.13 中引入的新功能、增强功能和技术变化。

1.3.1. 云

Red Hat build of Quarkus 2.13 版本引入了对 Reactive SQL 客户端的 Kubernetes 服务绑定支持。

为服务绑定添加以下扩展,并被工作负载投射支持:

  • quarkus-reactive-mssql-client
  • quarkus-reactive-mysql-client
  • quarkus-reactive-pg-client

如需更多信息,请参阅 Service Binding 指南。

Red Hat build of Quarkus 2.13 将 SQL Server 的 Microsoft JDBC 驱动程序从 mssql-jdbc-7.2.2.jre8.jar 更新至 mssql-jdbc-11.2.0.jre11.jar

1.3.2. Core

1.3.2.1. Apache Kafka UI

Red Hat build of Quarkus 2.13 为 Dev UI 引进了 Kafka UI

如果您将 Quarkus 应用程序配置为使用 quarkus-kafka-client 扩展并在开发模式下运行,则 Kafka UI 会自动连接到 Kafka 实例。

使用 Kafka UI,您可以执行以下任务:

  • 管理 Kafka 集群
  • 列出并创建主题
  • 视觉化记录
  • 发布新记录
  • 检查消费者组及其消耗 lags
1.3.2.2. Java 支持更改
1.3.2.2.1. 增加了对 Java 17 的支持

Red Hat build of Quarkus 2.13 通过以下方法增加对 Java 17 的支持:

  • Java 17 支持原生和 JVM 模式

现在,对于 JVM 和原生模式,红帽构建的 Quarkus 2.13 支持 Java 17。您可以使用带有 Quarkus 的 Java 17 为生产环境构建原生可执行文件。在此次更新之前,支持使用 Java 17 构建原生可执行文件作为红帽技术预览。

  • 使用 Java 17 构建原生可执行文件

如果您要使用 Mandrel 构建原生可执行文件,则使用 Java 17。在生成原生可执行文件时,quarkus 默认为 Java 17 构建器镜像,无论您的应用程序是使用 Java 11 创建的。

重要

在 JVM 模式中使用时,红帽将继续在 Quarkus 中支持 Java 11。

  • Quarkus code.quarkus.redhat.com 默认为 Java 17

在 Red Hat build of Quarkus 2.13 中,code.quarkus.redhat.com 项目生成器默认为 Java 17。要使用 Java 11 创建 Quarkus 项目,请在 Quickstart 配置选项的 CONFIGURE YOUR APPLICATION 部分中设置 Java 版本。

有关支持的 Java 和 OpenJDK 版本的更多信息,登录到红帽客户门户网站并查看 支持的配置 知识库解决方案。

1.3.2.3. Eclipse Vert.x 和 Netty 已升级

在 Red Hat build of Quarkus 2.13 中,Eclipse Vert.x 和 Netty 被升级到以下版本:

在 Red Hat build of Quarkus 2.13 中,引入了新的插件 quarkus-extension-maven-plugin,并替换了 quarkus-bootstrap-maven-plugin,它在 Quarkus 2.13 中弃用。

更新 Quarkus 扩展项目以使用新插件,方法是更新项目的 pom.xml 文件,并将 artifactId 属性的值从 quarkus-bootstrap-maven-plugin 改为 quarkus-extension-maven-plugin

在 Red Hat build of Quarkus 2.13 中,带有 RESTEasy Reactive 的 quarkus-resteasy-reactive-jaxb 扩展,您可以通过 JaxbContextCustomizer CDI Bean 自定义 XML Binding (JAXB)上下文的 Java 架构。

有关更多信息,请参阅 Quarkus "Writing REST Services with RESTEasy Reactive" 指南中的 Customize the JAXB 配置部分

1.3.2.6. 较小的配置 secret 密钥支持

当配置属性包含密码或其他机密时,SmallRye Config 可以保护它们以防止意外暴露这些值,例如,通过将它们输出到日志中。

在这个版本中,您可以将密钥标记为 secret。然后,应用程序代码只能在将 read 嵌套在 SecretKeys.doUnlocked 调用中后读取 protected 属性的值。

注意

红帽构建的 Quarkus 计划在以后的版本中扩展对 secret 的支持,比如在此功能中添加加密或哈希功能。

1.3.2.7. 支持 Quiltflower decompiler

当您开发 Quarkus 扩展时,Quarkus 会生成几个类,在很多情况下,在构建阶段转换现有的类。

在 Red Hat build of Quarkus 2.13 中,您可以使用 Quiltflower decompiler 来调试并检查这些类的源代码。这样,您可以更好地了解代码,提高其质量、速度和可用性。

在此次更新之前,使用了 Fernflower decompiler。但是,当切换到 Quiltflower 时,Fernflower decompiler 在 Quarkus 2.13 中已弃用。

要下载并运行 Quiltflower decompiler,请更新 application.properties 文件,将 quarkus.package.quiltflower.enabled 属性设置为 true

有关 Quiltflower decompiler 的更多信息,请参阅 Quarkus 编写您自己的扩展 指南。

1.3.3. data

在 Red Hat build of Quarkus 2.13 中,您可以通过注册 ValidatorFactory Customizer beans 来完全配置 ValidatorFactory。

在此次更新之前,您只能通过声明替换 Bean 来配置 ValidatorFactory。因此,一些高级配置(如覆盖内置约束验证器)无法实现。

如需更多信息,请参阅 Quarkus "Validation with Hibernate Validator" 指南中的 配置 ValidatorFactory 部分。

1.3.3.2. Elasticsearch 的 dev Services

Red Hat build of Quarkus 2.13 引入了 Elasticsearch 的 Dev Services,这意味着您在开发和测试 Quarkus 应用程序时不再需要设置和配置本地 Elasticsearch 服务。

如果您使用使用 Elasticsearch 服务的 Quarkus 扩展,当您在开发和测试模式下运行 Quarkus 应用程序时,Quarkus 会自动置备并启动 Elasticsearch 容器。您的应用程序可以立即使用 Quarkus 提供的 Elasticsearch 服务,而无需首先设置和配置它。

另外,当在 Elasticsearch Dev Services 中使用 Quarkus Hibernate Search 扩展时,Elasticsearch 模式会在每个新容器实例上初始化,然后在应用程序重启时重新初始化。

有关 Elasticsearch 的 Dev Services 的更多信息,包括配置属性和限制,请参阅以下 Quarkus 社区资源:

1.3.3.3. Infinispan 的开发服务

红帽构建的 Quarkus 2.13 包含对 Infinispan 的 Dev Services 的改进。

现在,您可以通过在 application.properties 配置文件中设置属性,在 Infinispan 客户端中配置缓存。通过引入新的配置属性,在 Infinispan 客户端中实施近缓存。如需更多信息,请参阅 Quarkus "Infinispan Client" 指南中的 从客户端创建缓存 部分。

在此次更新之前,您只能在生成缓存密钥时访问方法参数。

在这个版本中,您可以访问标上 @CacheResult@CacheInvalidate 的方法的名称和参数。您还可以使用上下文和依赖注入(CDI)将外部数据注入生成器实现。

您可以通过实施 io.quarkus.cache.CacheKeyGenerator 接口并在 @CacheResult@CacheInvalidate 注解的 keyGenerator 字段中声明该实施来完成此操作。

另外,在此次更新中,生成器实施中会自动提供 Method 对象。此对象提供有关和访问的信息,您通过 @CacheResult@CacheInvalidate 注释标注的方法。使用 Method 对象的主要原因是检索方法名称,并将它用作 cache 键的一个元素。

重要

由于大多数 方法 对象方法非常昂贵,因此请小心使用它们。但是,其 Method#getName 方法既有用且成本较低。

如需更多信息,请参阅 Quarkus "Application Data caching" 指南中的使用 CacheKeyGenerator 生成缓存密钥 部分。

Red Hat build of Quarkus 2.13 引入了 @SearchExtension 注解,可让您更轻松地自定义 Hibernate Search。

在此次更新之前,当使用注解而不是配置属性为 Hibernate Search 定义自定义配置器 Bean 时,还必须在 applications.properties 文件中引用 bean。在这个版本中,您可以通过只添加 @SearchExtension 注释,在一个步骤中定义自定义配置器 Bean。例如,要为 Hibernate Search 实现分析配置器 bean,您必须完成以下步骤:

  1. 您已注解了 AnalysisConfigurer 的实现:

    @Dependent
    @Named("myAnalysisConfigurer")
    public class AnalysisConfigurer implements ElasticsearchAnalysisConfigurer {
        @Override
        public void configure(ElasticsearchAnalysisConfigurationContext context) {
            // ...
        }
    }
    Copy to Clipboard Toggle word wrap
  2. application.properties 文件中引用您的 configurer bean:

    quarkus.hibernate-search-orm.elasticsearch.analysis.configurer=bean:myAnalysisConfigurer
    Copy to Clipboard Toggle word wrap

在这个版本中,使用 @SearchExtension,您不再在 application.properties 文件中引用您的自定义 bean。您只需注解实现:

@SearchExtension
public class AnalysisConfigurer implements ElasticsearchAnalysisConfigurer {
    @Override
    public void configure(ElasticsearchAnalysisConfigurationContext context) {
        // ...
    }
}
Copy to Clipboard Toggle word wrap
注意

分析 bean 示例中提供的语法适用于以下 Hibernate Search bean 参考配置属性:

  • quarkus.hibernate-search-orm.background-failure-handler
  • quarkus.hibernate-search-orm.automatic-indexing.synchronization.strategy
  • quarkus.hibernate-search-orm.elasticsearch.layout.strategy
  • quarkus.hibernate-search-orm.elasticsearch.analysis.configurer

如需更多信息,请参阅 Quarkus 社区中的 Hibernate 搜索指南

1.3.3.6. Quarkus Transaction API

Red Hat build of Quarkus 2.13 现在支持 QuarkusTransaction API,您可以使用它以编程方式管理应用程序中的事务。现在,您可以使用 Quarkus Transaction API 来更加精细地控制事务,并确保事务在失败时正确处理事务。

有关 QuarkusTransaction API 的更多信息,请参阅 "Using transaction in Quarkus" 指南中的 Programmatic method 部分。

1.3.3.7. Spring Data REST 扩展作为稳定功能发布

Red Hat build of Quarkus 2.13 将 Spring Data REST 扩展作为稳定功能发布。在此发行版本中,它是一个技术预览功能。

使用 Spring Data 兼容性层,您可以使用 Spring Data REST 扩展来简化编写 REST 层以创建、检索、更新和删除(CRUD)操作。

如需更多信息,请参阅 Quarkus Spring Data REST 指南。

1.3.4. 日志记录

在此次更新之前,当 quarkus.log.file.rotation.max-file-size 参数没有设置时:

  • 如果设置了 quarkus.log.file.rotation.file-suffix 参数,则 Quarkus 会执行定期日志文件轮转。但是,由于 LOGMGR-303,文件大小限制为大约 650 KB,而不是记录的 10 MB。
  • 如果没有设置 quarkus.log.file.rotation.file-suffix 参数,则 Quarkus 不会执行文件大小日志文件轮转,且文件大小会持续增长。

在这个版本中,当 quarkus.log.file.rotation.max-file-size 参数没有设置时:

  • 如果设置了 quarkus.log.file.rotation.file-suffix 参数,则 Quarkus 会执行定期日志文件轮转,文件大小限制为 10 MB。
  • 如果没有设置 quarkus.log.file.rotation.file-suffix 参数,则 Quarkus 执行文件大小日志文件轮转,文件大小限制为 10 MB。
Expand
表 1.1. 2.13 中 quarkus.log.file.rotation.max-file-size 的更改概述
 

quarkus.log.file.rotation.max-file-size set

quarkus.log.file.rotation.max-file-size not set (default)

quarkus.log.file.rotation.file-suffix set

无更改:

  • 定期文件大小日志轮转。
  • 最大文件大小是 set 值。

在此次更新之前:

  • 定期日志文件轮转。
  • 由于 LOGMGR-303,文件大小限制为大约 650 KB,而不是记录的 10 MB。

在这个版本中:

  • 定期日志文件轮转。
  • 文件大小限制为 10 MB。

quarkus.log.file.rotation.file-suffix not set (default)

无更改:

  • 文件大小日志轮转。
  • 最大文件大小是 set 值。

在此次更新之前:

  • 没有文件大小日志文件轮转。
  • 文件大小随着时间持续增长。

在这个版本中:

  • 文件大小日志文件轮转。
  • 文件大小限制为 10 MB。

如需更多信息,请参阅 Quarkus"配置日志记录"指南中的 文件日志记录 部分。

1.3.5. 消息传递

1.3.5.1. smallrye Reactive Messaging 更新至 3.16 版本

在 Red Hat build of Quarkus 2.13 中,SmallRye Reactive Messaging 框架已更新至版本 3.16。

引入了以下功能:

  • 在其自身上下文中运行的消息处理,允许您隐式将数据传播到管道中。
  • Apache Kafka 的检查点 API 的初始版本。
  • 允许用户为 Apache Kafka 编写自定义失败和提交处理程序的功能。
1.3.5.2. 支持 Qpid JMS 扩展

Quarkus 支持将 Qpid JMS 扩展添加为 Quarkus 应用的一部分,并便于使用 Apache Qpid 中的 AMQP JMS 客户端,包括使用原生可执行文件构建的 AMQP JMS 客户端。

可用于 AMQP 1.0 的 JMS API 的消息代理:

  • ActiveMQ Artemis
  • ActiveMQ 5
  • Microsoft Azure 服务总线
  • Qpid Broker-J
  • Qpid Dispatch 路由器等

使用扩展:

  1. 添加 org.amqphub.quarkus:quarkus-qpid-jms 模块作为项目中的依赖项,如下所示:

    <dependency>
        <groupId>org.amqphub.quarkus</groupId>
        <artifactId>quarkus-qpid-jms</artifactId>
    </dependency>
    Copy to Clipboard Toggle word wrap
  2. 使用 @Inject 注释注入 ConnectionFactory Java Messaging Service (JMS)代理:

    @Inject
    ConnectionFactory connectionFactory;
    Copy to Clipboard Toggle word wrap
  3. 管理 连接工厂配置

有关此扩展的示例应用用法,请查看 quarkus-qpid-jms-quickstart 存储库。

1.3.6. 安全性

1.3.6.1. OpenID Connect 预配置的供应商

在这个版本中,您可以使用 quarkus.oidc.provider 配置属性来引用知名的 OpenID Connect 和 OAuth2 供应商,如 Apple、Facebook、GitHub、Google、Microsoft、Switter 和 Twitter。

使用此属性时,您通常通过设置特定于帐户的客户端 ID、客户端 secret 以及可能的一些其他属性来完成配置。

这个新功能允许使用 OIDC 授权代码流机制来保护 Quarkus 端点,并更容易实现。

如需更多信息,请参阅 Quarkus 配置已知的 OpenID Connect 供应商 指南。

1.3.6.2. 支持 OIDC 后端通道注销

Red Hat build of Quarkus 2.13 引入了对 OpenID Connect (OIDC)扩展中的 back-channel logout 功能的支持。

在这个版本中,支持此功能的 OIDC 供应商(如 Keycloak)可以从所有参与 Quarkus 应用程序进行全局注销。

要配置对 back-channel logout 的支持,请进入 application.properties 文件并更新 quarkus.oidc.logout.backchannel.path 属性。

如需更多信息,请参阅以下资源:

1.3.6.3. 支持 OIDC 中代码交换(PKCE)

在这个版本中,增加了对 OpenID Connect (OIDC)协议的 Quarkus 实现的 proof Key for Code Exchange (PKCE)的支持。

PKCE 最小化使用 OIDC 的 Quarkus web 应用程序的授权代码拦截器风险。

如需更多信息,请参阅 Quarkus "OpenID Connect (OIDC)授权代码流机制指南中的 与 PKCE 相关的部分。

1.3.7. Web

您可以使用 quarkus.http.compress-media-types 配置属性为特定的介质类型启用 HTTP 压缩,并使用 io.quarkus.vertx.http.Compressed 注解为单独的资源方法启用 HTTP 压缩。也可以设置所需的压缩级别。

如需更多信息,请参阅 Quarkus 的 HTTP 压缩 部分"使用 RESTEasy 重新主动"指南中的 REST 服务。

1.3.7.2. 每个路径的额外 HTTP 标头

在这个版本中,您可以将 Web 应用程序配置为返回自定义 HTTP 标头值,以响应特定资源路径接收的请求。

如需更多信息,请参阅 Quarkus " HTTP Reference" 指南中的每个路径的额外 HTTP 标头部分。

1.3.7.3. 小的 GraphQL 非阻塞支持

在 Red Hat build of Quarkus 2.13 中,SmallRye GraphQL API 提供了一个 reactive 和 non-blocking 执行模型,并与 Mutiny 重新主动编程模型集成。

1.4. 支持和兼容性

您可以找到有关与 Quarkus 2.13 兼容的支持的配置和工件的详细信息,以及红帽客户门户网站中的高级别支持生命周期策略,如下所示:

1.4.1. 产品更新和支持生命周期政策

在 Red Hat build of Quarkus 中,功能版本可以是主版本,也可以是引入新功能或支持的次版本。Red Hat build of Quarkus 发行版本号直接与 Quarkus 社区项目 发行版本保持一致。红帽构建的 Quarkus 功能发行版本的版本号与它所基于的社区版本匹配。

重要

红帽不会为社区版本的每个版本发布 Quarkus 版本。红帽构建的 Quarkus 功能版本的节奏大约每六个月。

Red Hat build of Quarkus 为功能发行版本提供完全支持,直到后续版本发布为止。当一个功能版本被一个新版本取代时,红帽将继续为这个版本提供后续的 6 个月的维护支持,如以下支持生命周期图表概述 [Fig. 1]。

图 1.发行节奏和支持 Red Hat build of Quarkus 的生命周期

在版本的完全支持阶段和维护支持阶段中,红帽还提供 'service-pack (SP)' 更新和"micro"版本来修复错误以及常见漏洞和暴露(CVE)。

红帽构建的 Quarkus 新功能可能会引入对底层技术或平台中依赖项的增强、创新和更改。有关连续功能发行版中的新或更改内容的详细信息,请参阅 新功能、增强功能和技术变化

虽然在升级到最新版本后,Red Hat build of Quarkus 的大多数功能都会继续按预期工作,但在某些情况下,您可能需要更改现有应用程序,或对您的环境或依赖项执行一些额外的配置。因此,在将 Red Hat build of Quarkus 升级到最新版本前,请仔细检查影响与之前版本的兼容性以及发行注记中 已弃用的 组件和功能部分的更改

1.4.2. 经过测试并验证的环境

Red Hat build of Quarkus 2.13 在以下 Red Hat OpenShift Container Platform 和 Red Hat Enterprise Linux 8 版本中提供,并列出了支持的安装容器镜像。

请注意每个 CPU 架构的经过测试和支持的列。 要在未测试其部署环境的下表中获取版本支持状态,请参阅红帽知识库中的 Red Hat OpenShift Container Platform 中的 Red Hat Middleware 产品和组件支持

Expand
表 1.2. Red Hat OpenShift Container Platform 和 Red Hat Enterprise Linux 上的 Red Hat build of Quarkus 2.13 支持的部署环境

平台

架构

容器镜像/ JVM

测试

支持

OpenShift Container Platform 4.10

AMD64 和 Intel 64 (x86_64)

Red Hat OpenJDK 11 和 Red Hat OpenJDK 17

是 - 请参阅支持文章

OpenShift Container Platform 4.10

IBM Power (ppc64le)和 IBM Z (s390x)

Red Hat OpenJDK 11

是 - 请参阅支持文章

OpenShift Container Platform 4.12

IBM Power (ppc64le)和 IBM Z (s390x)

Red Hat OpenJDK 11

仅 IBM Power

OpenShift Container Platform 4.13

AMD64 和 Intel 64 (x86_64)

Red Hat OpenJDK 11 和 Red Hat OpenJDK 17

OpenShift Container Platform 4.13

IBM Power (ppc64le)和 IBM Z (s390x)

Red Hat OpenJDK 11, Eclipse Temurin 11

只有 IBM Z

Red Hat Enterprise Linux 8

AMD64 和 Intel 64 (x86_64)

OpenJDK 11.x 和 OpenJDK 17.x, Eclipse Temurin 11.x 和 17.x

  • 在 AMD64 和 Intel 64 (x86_64)架构上运行的 Red Hat OpenShift Dedicated 上支持 Red Hat build of Quarkus 2.13。红帽仅在最新版本的 OpenShift Dedicated 上测试 Quarkus。与上表中的 OpenShift Container Platform 相同的 "容器镜像/JVM" 和 "Supported" 值相同。
  • 有关支持的配置列表,登录到红帽客户门户网站并查看红帽知识库解决方案 Red Hat build of Quarkus 支持的配置

1.4.3. 开发支持

红帽为以下红帽构建的 Quarkus 功能、插件、扩展和依赖项提供了 开发支持

功能

  • 持续测试
  • Dev Services
  • Dev UI
  • 本地开发模式
  • 远程开发模式

plugins

  • Maven 协议缓冲器插件
1.4.3.1. 开发工具

红帽提供对使用 Quarkus 开发工具的 开发支持,包括 Quarkus CLI 和 Maven 和 Gradle 插件,以原型、开发、测试和部署红帽构建的 Quarkus 应用程序。

红帽不支持在生产环境中使用 Quarkus 开发工具。如需更多信息,请参阅红帽知识库文章 开发支持覆盖范围

1.5. 弃用的组件和功能

本节中列出的组件和功能在 Red Hat build of Quarkus 2.13 中被弃用。这个版本包括了并提供支持。但是,不会对这些组件和功能进行任何增强,以后可能会删除它们。

有关本发行版本中弃用的组件和功能列表,请登录到红帽客户门户网站并查看 红帽构建的 Quarkus 组件详情页

1.5.1. 弃用 quarkus-bootstrap-maven-plugin

插件 quarkus-bootstrap-maven-plugin 在 Red Hat build of Quarkus 2.13 中已弃用,现在使用 quarkus-extension-maven-plugin (在 Quarkus 2.13 中引入)。

1.5.2. 弃用 quarkus-reactive-routes 扩展

quarkus-reactive-routes 扩展在 Red Hat build of Quarkus 2.13 中已弃用,现在使用 Eclipse Vert.x 中的 Reactive Routes 扩展。红帽继续在 Quarkus 2.13 中支持 quarkus-reactive-routes 扩展,但我们鼓励用户直接使用 RESTEasy Reactive 或 Vert.x 路由器。

如需更多信息,请参阅以下资源:

1.5.3. 弃用 quarkus-resteasy-mutiny 扩展

quarkus-resteasy-mutiny 扩展在 Red Hat build of Quarkus 2.13 中已弃用。您可以使用 quarkus-resteasy-reactive 扩展替代。

1.5.4. 弃用 SmallRye 指标

Quarkus 采用 Micrometer 在高级用例中解决 SmallRye Metrics 问题,并提供了一种不太入侵的方式来监控 Quarkus 应用程序。

1.5.5. 弃用 SmallRye OpenTracing

smallrye OpenTracing 现在被视为已弃用,预计此技术将在以后的 Quarkus 版本中被删除。现在,在 Quarkus 应用程序中追踪和遥测的建议技术是 OpenTelemetry

1.6. 技术预览

本节列出了在红帽构建的 Quarkus 2.13 中作为技术预览的功能和扩展。

重要

技术预览功能不被红帽产品服务级别协议(SLA)支持,且其功能可能并不完善,红帽建议您不要在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能的更多信息,请参阅 技术预览功能范围

1.6.1. 支持 Hibernate Reactive

在 Red Hat build of Quarkus 2.13 中,Hibernate Reactive 仍作为技术预览功能提供。

Hibernate Reactive 是 Hibernate 对象关系映射程序(ORM)的被动 API。Hibernate 主动支持非阻塞数据库驱动程序,这意味着您的应用程序可以以被动方式与关系数据库交互。

有关红帽构建的 Quarkus 中作为技术预览提供的所有扩展和依赖项列表,登录到红帽客户门户网站,查看红帽知识库解决方案 Red Hat build of Quarkus 组件详情

1.7. 影响与早期版本兼容性的更改

这部分论述了 Red Hat build of Quarkus 2.13 的变化,它会影响与之前产品版本构建的应用程序的兼容性。

查看本发行版本中引入的破坏更改,并采取必要的操作来确保将现有应用程序升级到 Red Hat build of Quarkus 2.13 时,它们会在升级后继续正常工作。

1.7.1. Red Hat build of Quarkus BOM 不再包含 assertj

为了防止与 AssertJ 二进制文件的兼容性问题,在版本 2.13 中,AssertJ 库已从红帽构建的 Quarkus BOM 工件中删除。在以前的版本中,如果您运行使用旧版本的 AssertJ 编译的测试,这会导致 Quarkus BOM 中包含的版本出现问题。

要在应用程序中使用 AssertJ 库,请在 POM 中手动定义 AssertJ 版本,如下例所示:

<dependency>
    <groupId>org.assertj</groupId>
    <artifactId>assertj-core</artifactId>
    <version>3.22.0</version>
</dependency>
Copy to Clipboard Toggle word wrap

在这个版本中,对于大多数数据库,数据库名称和登录凭证都相同。

PostgreSQL、MariaDB、MySQL、IBM Db2 和 H2 数据库使用以下值:

  • 数据库名称: quarkus
  • username: quarkus 用于默认数据源的数据源或名称
  • Password: quarkus

因为 Microsoft SQL Server 的 Dev Service 不支持这些更改,所以它使用以下值:

  • 数据库名称: none
  • 用户名: SA
  • password: Quarkus123

您可以使用以下配置参数或环境变量覆盖 Dev Services 的这些值。

Expand
 

配置参数

环境变量

数据库名称

quarkus.datasource.devservices.db-name

QUARKUS_DATASOURCE_DEVSERVICES_DB_NAME

用户名

quarkus.datasource.devservices.username

QUARKUS_DATASOURCE_DEVSERVICES_USERNAME

密码

quarkus.datasource.devservices.password

QUARKUS_DATASOURCE_DEVSERVICES_PASSWORD

如需更多信息,请参阅 "Dev Services for Databases" 指南中的 Connect To Database Run as a Dev Service 部分。

1.7.3. H2 数据库升级到版本 2.1

在 Red Hat build of Quarkus 2.13 中,内存中 H2 数据库从 1.4 升级到 2.1。

在这个版本中,H2 添加新的保留关键字,如用户时间戳。如果您已在现有列名称中使用这些关键字,您必须调整数据库模型,例如,将列名称更改为 user_timestamp_value_

或者,您可能需要切换到容器方法进行测试并使用您在生产中使用的同一数据库,而不是 H2 数据库。

有关 H2 的更多信息,请参阅 H2 数据库 文档。

1.7.4. Hibernate ORM MariaDB dialect 更新至 10.6

在这个版本中,Hibernate ORM 使用 MariaDB 镜像进行 dialect 10.6。

如果您使用 MariaDB dialect 10.3、10.4 或 10.5,请通过将 application.properties 文件中的 quarkus.hibernate-orm.dialect 属性设置为 quarkus.hibernate-orm.dialect=org.hibernate.dialect.MariaDB103Dialect 来覆盖默认值。

如需更多信息,请参阅 Quarkus "Using Hibernate ORM 和 Java Persistence API (CAM) " 指南中的诊断 相关配置 部分。另外,请参阅 "Hibernate ORM aggregated JavaDocs" 文档的软件包 org.hibernate.dialect 软件包概述。

这个版本更改了 quarkus.hibernate-search-orm.enabled 配置属性的行为。在此次更新之前,它会在运行时启用 Hibernate Search。在这个版本中,它可在构建时启用 Hibernate 搜索。

这个版本还添加了 quarkus.hibernate-search-orm.active 配置属性,它会在运行时启用 Hibernate Search。

查看包含 quarkus.hibernate-search-orm.enabled 属性的配置文件,如 ./src/main/resources/application.properties,并更新它们以反映这些更改。

同样,这个更新改变了 QUARKUS_HIBERNATE_SEARCH_ORM_ENABLED 环境变量的行为,并添加 QUARKUS_HIBERNATE_SEARCH_ORM_ACTIVE 环境变量。如果需要,更新对 QUARKUS_HIBERNATE_SEARCH_ORM_ENABLED 环境变量的任何引用,以反映这些更改。

如需更多信息,请参阅 Quarkus "Hibernate Search" 指南中的 Main Configuration 部分。

1.7.6. HTTP 压缩设置现在在构建时修复

在 Red Hat build of Quarkus 2.13 中,HTTP 压缩设置的行为已更改。在这个版本中,在构建时以配置设置的形式交付 HTTP 压缩设置,不再在运行时覆盖这些设置。在构建时指定 HTTP 压缩设置意味着您可以根据您的要求进一步优化应用程序配置。

注意

并非所有 HTTP 响应都默认压缩。您可以通过将 quarkus.http.enable-compression 配置属性设置为 true 来启用 HTTP 压缩支持。如果客户端不支持 HTTP 压缩,则响应正文不会被压缩。

有关 HTTP 压缩更新的更多信息,请参阅 新功能、增强功能和技术更改 部分和以下 HTTP 更新,HTTP 响应会根据配置属性设置和介质类型压缩

对于 RESTEasy Reactive、Reactive Routes 和 static 资源,只有在设置了 Content-Type 标头且值为压缩的介质类型时,才会对 HTTP 响应进行压缩,如使用 quarkus.http.compress-media-types 属性进行配置。

默认情况下,会压缩以下介质类型:

  • text/html
  • text/plain
  • text/xml
  • text/css
  • text/javascript
  • application/javascript

1.7.8. @InjectMock 注释可能需要额外的限定符

在红帽构建的 Quarkus 2.13 中,@InjectMock 注释,该注解在 quarkus-junit5-mockito 扩展中可用,使用 javax.enterprise.inject.spi.BeanManager#getBeans () 方法在内部获取符合 @InjectMock 注入点的 Bean。

在此次更新之前,由于 BeanManager#getBeans () 方法存在问题,如果您没有指定限定符,则与所需类型匹配的 bean 都有资格注入。因此,一个测试注入带有 @Default 以外的限定符的 bean 的模拟,且不指定这个限定符成功。

在这个版本中,如果注入模拟的 bean 声明了 @Default 以外的限定符,您必须指定一个限定符。因此,如果测试注入带有 @Default 以外的限定符但未指定此限定器的值,则测试会失败。

quarkus.datasource.devservices 配置属性(在 Red Hat build of Quarkus 2.7 中已弃用)现已被删除。

要为关系数据库禁用 Dev 服务,请使用 quarkus.datasource.devservices.enabled 属性。

如需更多信息,请参阅 Quarkus "Dev Services for Databases" 指南中的 Enabling / Disabling Dev Services for Database 部分。

弃用的 quarkus.http.allow-forwardedquarkus.http.proxy-address-forwarding 配置属性已被删除。

要在反向代理后面运行 Quarkus,请使用 quarkus.http.proxy.allow-forwardedquarkus.http.proxy.proxy-address-forwarding 属性。

quarkus.http.proxy 配置属性提供的功能比已删除的与代理相关的属性要多。

如需更多信息,请参阅 Quarkus "HTTP Reference" 指南中的在 反向代理后面运行

此更新将 quarkus.http.root-path 配置属性的值添加到 @TestHTTPResource 注释的 URI 值中。

当您使用 @TestHTTPResource 注释将 URI 注入测试时,quarkus.http.root-path 配置属性值位于 URI 之前。

例如,在 Hello World 应用中,如果您定义了 @ApplicationPath ("/hello")@TestHTTPResource ("index.html") ;并设置 quarkus.http.root-path=/root ;当您以 dev 模式运行应用程序时,它有以下 URL

如需更多信息,请参阅:

在这个版本中,红帽不会为 Mandrel 22.3 提供基于 Java 11 的红帽构建的 Quarkus 原生构建器镜像。

要将应用程序编译成原生可执行文件,请将较早的基于 Java 11 的镜像替换为基于 Java 17 的红帽构建的 Quarkus 原生构建器镜像

基于 Java 17 的红帽构建的 Quarkus 原生构建器镜像与大多数 Java 11 应用程序兼容,适用于大多数生产原生可执行文件构建。但是,在个别情况下,可能会导致构建失败。一个这样的情形是原生可执行文件构建是增量或多阶段构建过程的一部分。

注意

红帽不提供对基于 Quarkus 社区 Java 11 的 Mandrel 22.3 基础镜像的技术支持。

1.7.13. 删除 quarkus-undertow-websockets 扩展

在 Red Hat build of Quarkus 2.13 中,删除了 io.quarkus:quarkus-undertow-websockets 扩展的社区版本。红帽仅在红帽构建的 Quarkus 2.7 生命周期结束时提供程序错误修正和支持。作为 io.quarkus:quarkus-undertow-websockets 扩展的替代选择,您可以使用 WebSockets Client (io.quarkus:quarkus-websockets-client)和 WebSockets Server (io.quarkus:quarkus-websockets)扩展,该扩展基于 Eclipse Vert.x 中的 WebSockets 协议实现。

如需更多信息,请参阅 Quarkus "Using WebSockets" 指南中的创建 Maven 项目 部分。

1.7.15. RESTEasy Reactive 是新的默认 REST 层

当使用红帽构建的 Quarkus 创建新应用程序时,quarkus-resteasy-reactive 属性现在默认选择,而不是 quarkus-resteasy

RESTEasy 主动支持传统的阻止工作负载和被动工作负载。根据端点方法的返回类型,RESTEasy Reactive 选择适合的模式。

Example:

  • 返回 MyEntity 将使端点阻止。
  • 返回 Uni<MyEntity&gt; 将使端点重新活跃。

如需更多信息,请参阅使用 RESTEasy Reactive 的 Quarkus 编写 REST 服务 指南。

在此次更新之前,附加到 @GraphQLApi 端点的默认范围是 @Dependent。在这个版本中,若要与 REST 端点保持一致,@GraphQLApi 充当 @Singleton bean,除非您明确向端点添加 scope 注解。

在 Red Hat build of Quarkus 2.13 中,现在在 quarkus. 命名空间中为 SmallRye Stork 扩展配置属性。

在此次更新之前,您可以使用 stork.my-service 前缀的属性配置了 SmallRye Stork 扩展。在这个版本中,您必须使用 quarkus 为这些属性添加前缀,例如 quarkus.stork.my-service

以下示例显示了使用一些可用的 SmallRye Stork 配置属性的 SmallRye Stork 扩展配置示例:

  • quarkus.stork.my-service.service-discovery.type=consul
  • quarkus.stork.my-service.service-discovery.consul-host=localhost
  • quarkus.stork.my-service.service-discovery.consul-port=8500
  • quarkus.stork.my-service.load-balancer.type=least-response-time
  • quarkus.stork.my-service.load-balancer.use-secure-random=true

有关 SmallRye Stork 及其配置属性的更多信息,请参阅 Quarkus 社区或 SmallRye Stork 文档中的所有配置选项。https://quarkus.io/version/2.13/guides/all-config

已弃用的 OpenTracing 功能的相关 OpenTracing 库代码已迁移到 SmallRye OpenTracing 存储库,因为代码不再由 OpenTracing 社区维护。此代码的 Java 软件包已更改,但代码保持不变。

但是,迁移的代码由私有 API 组成,除非您使用其中的一些 API,这个更改不会影响您的应用。为避免中断更改,请使用在 OpenTracing 库基础上构建的已实施 API。

这个更改只会影响使用 opentracing-contrib 库中的非公共 API 的应用程序。将 API 与 org.eclipse.microprofile.opentracing.Traced 注释搭配使用的用户不受影响。

注意

预计 OpenTracing 技术将在以后的 Quarkus 版本中被 OpenTelemetry 替代。现在,在 Quarkus 应用程序中追踪和遥测的建议技术是 OpenTelemetry。

Red Hat build of Quarkus 2.13 引入了 OpenID Connect (OIDC) web-app 应用程序的基于路径的身份验证。

在这个版本中,如果您的 Quarkus 应用程序组合了多个身份验证机制,包括 OIDC 授权代码机制,您必须在 application.property 文件中指定 quarkus.http.auth.permission.<policy-name>.auth-mechanism=code 属性,而不是 quarkus.http.auth.permission.<policy-name>.auth-mechanism=bearer

在此次更新之前,无法实现 JWT bearer 令牌和 OIDC 授权代码流机制的组合。

例如,如果您使用 quarkus-smallrye-jwt 扩展提供 JWT bearer-token 身份验证机制,以向 /management 端点和 OIDC 授权代码流机制验证请求,以对 /web-app 端点验证请求,请设置以下属性:

  • quarkus.http.auth.permission.webapp.paths=/web-app
  • quarkus.http.auth.permission.webapp.policy=authenticated
  • quarkus.http.auth.permission.webapp.auth-mechanism=code
  • quarkus.http.auth.permission.management.paths=/management
  • quarkus.http.auth.permission.management.policy=authenticated
  • quarkus.http.auth.permission.management.auth-mechanism=bearer

在此次更新之前,用户需要启用 OpenTelemetry Tracing 为 javax.ws.rs.client.client.ClientBuilder.newClient () 客户端创建 Spans,在使用该客户端创建 programmatic javax.ws.rs.client.Client 过滤器。

Red Hat build of Quarkus 2.13 引入了一个解决方案,用户可以在创建编程或注入的 REST 客户端时显式注册 OpenTelemetryClientFilter。REST 客户端 Reactive 使用的底层 Vert.x 客户端现在添加了 OpenTelemetry 检测,并简化了客户端的创建。

1.8. 程序错误修复

Quarkus 2.13 提供更高的稳定性,包括对用户有严重影响的错误的修复。

要获取红帽构建的 Quarkus 的最新修复,请确保使用最新的可用版本,即 2.13.9.SP2。

1.8.1. 安全修复

在 Red Hat build of Quarkus 2.13 中解决了以下 CVE:

Red Hat build of Quarkus 2.13.9.SP2

  • CVE-2024-1597 org.postgresql/postgresql:pgjdbc: PostgreSQL JDBC Driver 允许攻击者注入 SQL (如果使用 PreferQueryMode=SIMPLE
  • CVE-2024-25710 org.apache.commons/commons-compress: Denial 为损坏的 DUMP 文件造成一个死循环导致的服务
  • CVE-2024-26308 org.apache.commons/commons-compress:OutOfMemoryError unpacking broken Pack200 file

Red Hat build of Quarkus 2.13.9.SP1

  • CVE-2023-5675 io.quarkus.resteasy.reactive/resteasy-reactive:quarkus: Authorization flaw in Quarkus RestEasy Reactive 和 Classic when "quarkus.security.jaxrs.deny-unannotated-endpoints" 或 "quarkus.security.jaxrs.default-roles-allowed" 属性被使用
  • CVE-2023-6267 io.quarkus/quarkus -resteasy: quarkus : JSON 有效负载在 REST 资源与注解一起使用时被处理

Red Hat build of Quarkus 2.13.9

  • Quarkus 缓存运行时的 CVE-2023-6393 漏洞 :@CacheResult 使用中的上下文切换问题
  • CVE-2023-39410 Apache Avro Java SDK: Memory when deserialing untrusted data in Avro Java SDK
  • CVE-2023-35887 Apache Mina SSHD:SFTP 服务器实现中的信息公开
  • CVE-2023-43642 Snappy Java:通过对块长度实施上限检查来解决潜在的服务(DoS)漏洞
  • CVE-2023-31582 Jose4j:增强迭代计数设置,增强安全措施并缓解相关的风险
  • CVE-2023-34453 Snappy Java: Integer overflow in shuffle 会导致 DoS
  • CVE-2023-34454 Snappy Java: Integer overflow in compress cause DoS
  • CVE-2023-34455 Snappy Java: 未检查的块长度会导致 DoS
  • CVE-2023-2976 Guava: Insecure 临时目录创建
  • CVE-2023-34462 Netty: SniHandler 16MB 分配会导致 OOM

Red Hat build of Quarkus 2.13.8.SP3

  • CVE-2023-44487 HTTP/2: 多 HTTP/2 启用的 Web 服务器会受到 DDoS 攻击(Rapid Reset Attack)的影响

Red Hat build of Quarkus 2.13.8.SP2

Red Hat build of Quarkus 2.13.8

  • CVE-2023-26053 gradle: 对 PGP 密钥使用长 ID 是不安全的,可能会受到冲突攻击
  • CVE-2022-3782 keycloak: 通过双 URL 编码的路径遍历
  • CVE-2023-0481 io.quarkus-quarkus-parent:quarkus: Insecure permissions on temp files
  • CVE-2023-0482 RESTEasy :创建不安全的临时文件
  • CVE-2023-1584 quarkus-oidc: ID 和访问令牌泄漏(通过授权代码流)
  • CVE-2023-28867 graphql-java: Crafted GraphQL 查询会导致堆栈消耗
  • CVE-2022-45787 apache-james-mime4j: Temporary File Information Disclosure in MIME4J TempFileStorageProvider
  • CVE-2022-3171 protobuf-java: Timeout in parser lead to DoS
  • CVE-2022-4116 quarkus_dev_ui: Dev UI Config Editor 易受驱动 localhost 攻击,从而导致 RCE
  • CVE-2022-31197 postgresql: SQL Injection in ResultSet.refreshRow () with malicious 列名称
  • CVE-2022-37734 graphql-java: DoS by malicious query
  • CVE-2022-42003 jackson-databind: Deep wrapper array nesting wrt UNWRAP_SINGLE_VALUE_ARRAYS
  • CVE-2022-42004 jackson-databind: 使用深度嵌套数组
  • CVE-2022-42889 commons-text,apache-commons-text: Variable interpolation RCE
  • CVE-2022-41946 jdbc-postgresql,postgresql-jdbc:PreparedStatement.setText (int, InputStream) 会在 InputStream 大于 2k 时创建一个临时文件
  • CVE-2023-0044 quarkus-vertx-http: 启动跨站点攻击,这可能会导致信息 Disclosure
  • CVE-2022-41881 codec-haproxy: HAProxyMessageDecoder Stack Exhaustion DoS
  • CVE-2022-45047 sshd-common,mina-sshd: Java unsafe deserialization 安全漏洞

1.8.2. 其他改进和程序错误修复

Red Hat build of Quarkus 2.13.8

  • QUARKUS-2214 Ban org.javassist:javassist
  • QUARKUS-2221 平台生成器应该自动添加某个参与者所需的限制,并由另一个人管理
  • QUARKUS-2230 引入基于 OpenShift 的 CI 上游运行
  • code.quarkus.io 和 code.quarkus.redhat.com 上的 Chrome 选项卡中 QUARKUS-2238 Crash
  • QUARKUS-2246 integration Vertx HTTP extension with custom CredentialsProvider
  • QUARKUS-2284 OpenShift Serverless 请求,我们在使用 OpenShift Serverless 功能时支持它
  • QUARKUS-2328 Promote Qute Templating from TP to full support
  • QUARKUS-2329 将 RESTEasy Reactive Qute 从 TP 提升到全面支持
  • QUARKUS-2330 将 RESTEasy Qute 从 TP 提升到全面支持
  • QUARKUS-2331 将 Kubernetes 配置扩展从 TP 提升到全面支持
  • QUARKUS-2332 Drop TP 支持 Reactive DB2 客户端
  • QUARKUS-2335 应用程序使用 Quarkus 原生构建消耗更多 CPU 资源
  • QUARKUS-2349 完全支持 Java 17 并丢弃用于原生应用程序的 Java 11
  • QUARKUS-2367 Move Funqy extension (s) OpenShift Serverless to supported 状态
  • QUARKUS-2387 邮件程序扩展从 TP 提升至完全支持
  • QUARKUS-2388 将 Spring Data REST 从 TP 提升到全面支持
  • QUARKUS-2389 将 OpenID Connect Client Filter Reactive 从 TP 提升为完全支持
  • QUARKUS-2390 Promote quarkus-hibernate-orm-rest-data-panache 扩展从 TP 到完全支持
  • QUARKUS-2392 Drop 技术预览支持 RESTEasy Mutiny
  • QUARKUS-2393 Drop Tech Preview for Mutiny 支持 REST 客户端扩展
  • OpenTelemetry Jaeger exporter 的 QUARKUS-2394 Drop TP
  • QUARKUS-2395 Drop TP from Security JPA extension
  • QUARKUS-2396 Drop TP for Eclipse Vert.x GraphQL
  • QUARKUS-2453 Deprecate quarkus-reactive-routes 扩展
  • QUARKUS-2473 存储库在 quarkus-platform-config-2.13.0.CR1-redhat-00001.pom 中声明
  • QUARKUS-2478 将 Microsoft SQL JDBC 驱动程序更新为 11.2.0.jre11
  • QUARKUS-2479 SmallRye Config SecretKeys 支持
  • QUARKUS-2480 Introduce @SearchExtension 以通过注解的 Bean 配置 Hibernate Search
  • QUARKUS-2481 允许为 JAXB 上下文提供自定义配置
  • QUARKUS-2482 Deprecate quarkus-bootstrap-maven-plugin 替代 quarkus-extension-maven-plugin
  • QUARKUS-2483 Kubernetes 服务绑定支持 Reactive SQL 客户端
  • QUARKUS-2484 SmallRye Reactive Messaging 3.16
  • QUARKUS-2485 SmallRye GraphQL 非阻塞支持
  • QUARKUS-2486 Keycloak 更新到 18
  • QUARKUS-2487 压缩支持被动路由和 RESTEasy 被动
  • QUARKUS-2489 OIDC Back channel logout
  • QUARKUS-2490 为特定路径添加 HTTP 标头
  • QUARKUS-2491 OIDC - 支持代码交换密钥(PKCE)
  • QUARKUS-2492 QuarkusTransaction API
  • Quarkus 依赖的 QUARKUS-2538 List 产品作为产品化过程的一部分
  • QUARKUS-2558 Day -9: [Eng] 检查是否需要更新 EARF 和 ProdSec
  • OIDC BackChannelLogoutHandler 中的 QUARKUS-2592 NPE
  • QUARKUS-2672 Infinispan 客户端与新发布的 Red Hat Data Grid 8.4 不一致
  • QUARKUS-2693 Keycloak 容器无法在 devmode 中启动
  • QUARKUS-2706 Quarkus CLI 无法解析 io.quarkus:quarkus-bom 的扩展目录
  • QUARKUS-2758 Upgrade flapdoodle to 3.5.2 并将其添加到 Dependabot
  • QUARKUS-2759 确保将适当的通用类型用于 RestResponse
  • HTTP 参考指南中的 QUARKUS-2760 添加 HTTPS 端口配置
  • QUARKUS-2761 Rename 方法名称在虚拟线程 doc 中
  • 在同步网站文档分支时,QUARKUS-2762 创建目录
  • 安全指南中列表的 QUARKUS-2763 Fix broken markup
  • QUARKUS-2764 Upgrade narayana to 5.13.1.Final
  • QUARKUS-2765 为 Misc 4 原生作业设置更高的超时
  • QUARKUS-2766 Quartz - 添加向后兼容性备注
  • 在测试类前 QUARKUS-2767 Compile 应用程序类
  • QUARKUS-2768 修正了 stork-reference.adoc 中的代码
  • QUARKUS-2769 修复虚拟线程文档中的编译错误
  • QUARKUS-2770 更新最新的 brew openjdk 软件包
  • QUARKUS-2771 Bump com.gradle.plugin-publish 从 1.0.0 到 /devtools/gradle 中的 1.1.0
  • Stork 指南中的 QUARKUS-2772 Fixed 错误
  • QUARKUS-2773 Fix IsDockerWorking 类不使用 TestContainersStrategy
  • 对于容器构建,默认情况下 QUARKUS-2774 Use Mandrel
  • QUARKUS-2775 文档:有关 CA 证书嵌入的修复声明
  • QUARKUS-2776 Correct 拼写错误和代码风格在虚拟线程指南上
  • 当目标已存在而不是立即删除时,QUARKUS-2777 会生成临时 uber-jar
  • QUARKUS-2778 Demote the "test dir mapping" 日志消息要调试
  • QUARKUS-2779 修复文档中的表条目
  • QUARKUS-2780 在 Kubernetes 客户端扩展中注册所有扩展性实施
  • QUARKUS-2781 替换 JReleaser 描述符中已弃用的属性
  • QUARKUS-2782 修复虚拟线程文档中的编译错误
  • QUARKUS-2783 Ensure that aroundInvoke 拦截器获取正确的方法参数
  • QUARKUS-2784 文档 Mandrel 22.3 不再提供 -java11 镜像
  • QUARKUS-2785 当传播重复的上下文时,丢弃请求范围
  • QUARKUS-2786 Propagate the javax.annotation.security annotations in REST Data
  • QUARKUS-2787 Rest Data Panache: Correct Open API 集成
  • QUARKUS-2788 支持设置 Panache REST Data 扩展中的 RolesAllowed
  • QUARKUS-2789 Properly 允许混合 @QuarkusTest 和 @QuarkusMainTest
  • QUARKUS-2790 Switch 原生 GC 策略,从空间/时间到自适应(默认)
  • 在 Quarkus 中使用受管 Vert.x 时,QUARKUS-2829 内部支持 Micrometer 指标
  • QUARKUS-2835 Disable DuplicatedContext:18testThatBlockingEventConsumersAreCalledOnDuplicatedContext
  • QUARKUS-2836 Reduce Config startup footprint
  • QUARKUS-2837 Backport Vert.x Metrics 支持
  • QUARKUS-2838 OpenTelemetry - Fix missing char
  • 所有方法的 Spring Data Rest 中的 QUARKUS-2839 Propagate 安全注解
  • QUARKUS-2840 确保 TestMojo 解析测试范围的依赖项
  • QUARKUS-2841 MultiPartConfig in HTTP Vert.x 扩展不足
  • QUARKUS-2842 CompletableFuture smart 分配支持
  • QUARKUS-2843 将 quarkus-cache 扩展状态更改为 stable
  • QUARKUS-2844 Switch 从系统属性切换到 Panache 查询硬编码行分隔符
  • QUARKUS-2845 修复构建原生镜像文档中的一些拼写错误
  • QUARKUS-2846 Ensure that new line chars not break Panache projection
  • QUARKUS-2847 在载入工作区时始终将原始模型存储在缓存中
  • code.quarkus 和 maven 软件仓库中的 QUARKUS-2925 不同的版本
  • QUARKUS-2978 ExceptionMapper<WebApplicationException> 在 DEV 模式下无法正常工作
  • 如果预期只有 bearer 令牌,则 QUARKUS-3158 Do 不创建会话和 PKCE 加密密钥
  • QUARKUS-3159 2.13:如果启用了 CORS,则默认不支持任何 Origin
  • QUARKUS-3161 Fix security-csrf-prevention.adoc
  • QUARKUS-3163 更新 codestarts 以使用 openjdk 容器镜像 1.15
  • QUARKUS-3164 Logging with Panache: Fix LocalVariablesSorter usage
  • QUARKUS-3167 Make SDKMAN 次要发行本用于维护和预览版本
  • QUARKUS-3168 Backport Ensure that ConfigBuilder 类在原生模式中工作到 2.13
  • QUARKUS-3169 Narayana LRA coordinator Docker 镜像的新主页
  • 当未设置密码时,QUARKUS-3170 Fix truststore REST Client config
  • QUARKUS-3173 在运行时重新初始化 sun.security.pkcs11.P11Util
  • QUARKUS-3174 Prevent SSE 编写可能会导致标头的累积
  • QUARKUS-3175 Filter out RESTEasy related warning in ProviderConfigInjectionWarningsTest
  • QUARKUS-3176 确保父模块加载到依赖于它们的工作区
  • QUARKUS-3177 Fix copy paste error in qute docs
  • 只有处于无根模式时,才会将 QUARKUS-3178 Pass --userns=keep-id 传递给 Podman
  • 在发送质询恢复请求时,QUARKUS-3179 修复会卡住 HTTP2 请求
  • QUARKUS-3180 在初始化用于 dev 模式的源和类路径时,使用有效的 Maven 项目构建配置
  • QUARKUS-3181 确保 quarkus:go-offline 正确支持测试范围依赖项
  • QUARKUS-3182 [2.13.x] - Update 2.13 以使用新的容器镜像
  • QUARKUS-3184 Use "SchemaType.ARRAY" 而不是 "ARRAY" 用于原生支持
  • QUARKUS-3185 代表 create-app.adoc 中的逻辑,并允许定义流
  • QUARKUS-3187 Allow context propagation for OpenTelemetry
  • QUARKUS-3188 Fix RestAssured URL 处理和 QuarkusProdModeTest 中的意外重启
  • 使用 MacOS 和 Podman 时 QUARKUS-3191 Drop ':z' bind 选项
  • QUARKUS-3194 Exclude Netty 反映配置文件
  • QUARKUS-3195 集成来自 Infinispan 14 的 api 依赖项(#ISPN-14268)

1.9. 已知问题

本节列出了红帽构建的 Quarkus 2.13 中已知的问题。

描述

在红帽构建的 Quarkus 2.13.9.SP1 中实施的安全修复来解决 CVE-2023-6267 的问题。

只有在使用带有 RestEasy Classic 的多个 OIDC 供应商时,只有在使用上下文和依赖注入(CDI)拦截器以编程方式解析 OIDC 租户配置标识符时,才会进行这种中断更改。

在此次更新之前,CDI 拦截器会在身份验证检查前运行。在引入修复后,会在 CDI 拦截器被触发前进行身份验证。因此,使用 CDI 拦截器解析多个 OIDC 供应商配置标识符不再可以正常工作。RESTEasy 主动应用不会受到影响。

临时解决方案

使用 quarkus.oidc.TenantResolver 方法解析当前的 OIDC 配置租户 ID。

如需更多信息,请参阅 Quarkus "Using OpenID Connect (OIDC)多租户指南中的使用 注解解析租户标识符 部分。

1.9.2. 红帽构建的 Quarkus 2.13.9 不支持域套接字

Red Hat build of Quarkus 2.13.x 和 3.2 不支持原生传输和相关功能。因此,使用原生 epollio_uring 传输和使用需要原生传输的域套接字。

在 Red Hat build of Quarkus 版本 2.13.8.SP2 之前,存在一个安全问题 CVE-2023-4853,攻击者可以完全绕过安全策略,从而导致未经授权的端点访问,并可能拒绝服务。

如果您使用基于路径的规则保护 Quarkus 应用程序的 HTTP 端点,您必须确保您的 Quarkus 应用程序更新至红帽构建的 Quarkus 2.13.8.SP2。或者,按照红帽产品安全中心提供的临时解决方案选项进行操作。https://access.redhat.com/security

有关此安全问题以及有关不同缓解选项的详细信息,请参阅 Red Hat Security Bulletin RHSB-2023-002 的 Mitigation 部分。

1.9.4. 使用 CORS 过滤器进行用户体验

描述

使用红帽构建的 Quarkus 2.13.8.SP1,Vert.x cross-origin 资源共享(CORS)过滤器 Vert.x HTTP CORS 是严格的,当过滤器没有明确配置为接受此类源时拒绝同一原始请求。

临时解决方案

将过滤器配置为接受同一原始请求。例如,如果您在包含 HTML 页面的 https://my.org 上托管 Quarkus 应用程序,且页面包含将更新发布到 https://my.org 的 JavaScript,您必须在 application.properties 文件中应用以下配置以允许相同的原始请求:

quarkus.http.cors=true
quarkus.http.cors.origins=https://my.org
Copy to Clipboard Toggle word wrap

现在,由于修复 CVE-2022-4147 quarkus-vertx-http: 安全错误配置 CORS : OWASP A05_2021 级别,需要配置 Vert.x HTTP CORS 过滤器。

红帽正在评估未来发布的红帽构建的 Quarkus 版本是否放宽这一要求。

1.11. Quarkus metering labels for Red Hat OpenShift

您可以在 Quarkus pod 中添加 metering 标签,并使用 OpenShift Metering Operator 检查红帽订阅详情。

注意
  • 不要将 metering 标签添加到 Operator 或模板部署和管理的任何 pod 中。
  • 您可以使用 OpenShift Container Platform 版本 4.8 及更早版本上的 Metering Operator 将标签应用到 pod。从 4.9 版本中,在没有直接替换的情况下,Metering Operator 不再可用。

Quarkus 可以使用以下 metering 标签:

  • com.company: Red_Hat
  • rht.prod_name: Red_Hat_Runtimes
  • rht.prod_ver: YYYY-Q1
  • rht.comp: "Quarkus"
  • rht.comp_ver: 2.13.9
  • rht.subcomp_t: application

更新于 2024-04-23

法律通告

Copyright © 2024 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

© 2025 Red Hat