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 检测,并简化了客户端的创建。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部