红帽构建的 Quarkus 3.2 发行注记
使开源包含更多 复制链接链接已复制到粘贴板!
红帽致力于替换我们的代码、文档和 Web 属性中有问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息。
第 1 章 Red Hat build of Quarkus 3.2 发行注记 复制链接链接已复制到粘贴板!
发行注记提供有关红帽构建的 Quarkus 3.2 的新功能、重要的技术更改、技术预览功能、错误修复、已知问题以及相关公告的信息。
这包括以下显著变化:
另外还提供了有关升级和向后兼容性的信息,可帮助您从早期版本中过渡。
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 和 RESTEasy Reactive (Jakarta REST)。
作为开发人员,您可以选择 Java 应用所需的 Java 框架,您可以在 Java 虚拟机(JVM)模式下运行,或者以原生模式运行。Quarkus 提供了构建 Java 应用程序的容器优先方法。容器先行方法促进微服务和功能的容器化和高效执行。因此,Quarkus 应用程序具有较小的内存空间和更快的启动时间。
Quarkus 还通过统一配置、自动配置未配置的服务、实时编码和持续测试等功能优化应用程序开发流程,为您提供对代码更改的即时反馈。
1.2. 红帽构建的 Quarkus 社区版本和红帽构建的 Quarkus 之间的区别 复制链接链接已复制到粘贴板!
作为应用程序开发人员,您可以访问两个不同的 Quarkus 版本: Quarkus 社区版本和产品化版本,Red Hat build of Quarkus。
下表描述了 Quarkus 社区版本和红帽构建的 Quarkus 之间的区别。
| 功能 | Quarkus 社区版本 | Red Hat build of Quarkus 版本 | 描述 |
|---|---|---|---|
| 访问最新的社区功能 | 是 | 否 | 使用 Quarkus 社区版本,您可以访问最新的功能开发。 红帽没有发布红帽构建的 Quarkus,以与社区版本的每个版本对应。红帽构建的 Quarkus 功能版本的节奏大约每 6 个月。 |
| 来自红帽的企业支持 | 否 | 是 | 红帽只为红帽构建的 Quarkus 提供企业支持。要报告 Quarkus 社区版本的问题,请参阅 quarkusio/quarkus - issues。 |
| 访问长期支持 | 否 | 是 | Red Hat build of Quarkus 的每个功能发行版本都会被完全支持,直到下一个功能发布为止。当功能版本被新版本取代时,红帽将继续提供后续的 6 个月的维护支持。如需更多信息,请参阅 支持和兼容性。 |
| 常见的漏洞和风险(CVE)修复和程序错误修复被向后移植到早期版本 | 否 | 是 | 在 Red Hat build of Quarkus 中,特定的 CVE 修复和程序错误修复会定期向后移植到支持的流中。在 Quarkus 社区版本、CVE 和程序错误修复中,通常仅在最新版本中提供。 |
| 使用 Red Hat OpenShift Container Platform 和 Red Hat Enterprise Linux (RHEL)测试并验证 | 否 | 是 | Red Hat build of Quarkus 使用 Red Hat OpenShift Container Platform 和 RHEL 构建、测试并验证。红帽根据您的订阅协议为支持的配置和经过测试的集成提供生产和开发支持。如需更多信息,请参阅 Red Hat build of Quarkus 支持的配置。 |
| 使用安全构建系统从源构建 | 否 | 是 | 在红帽构建的 Quarkus 中,红帽使用安全软件交付提供核心平台和所有支持的扩展,这意味着它们从源构建、扫描以了解安全问题,以及验证的许可证使用情况。 |
| 访问 JDK 和红帽构建的 Quarkus 原生构建程序分发 | 否 | 是 | Red Hat build of Quarkus 支持经过认证的 OpenJDK 构建和经认证的原生可执行构建器。请参阅以下接受。如需更多信息,请参阅 支持的配置。 |
Red Hat build of Quarkus 支持使用 红帽构建的 Quarkus 原生构建器镜像来构建原生 Linux 可执行文件,该镜像基于 Mandrel 并由红帽分发。
如需更多信息,请参阅将 Quarkus 应用程序编译到原生可执行文件。使用红帽构建的 Quarkus 不支持使用 Oracle GraalVM 社区版(CE)、Mael 社区版本或任何其他 GraalVM 发行版构建原生可执行文件。
1.3. 新功能、增强功能和技术变化 复制链接链接已复制到粘贴板!
本节概述了红帽构建的 Quarkus 3.2 中引入的新功能、增强功能和技术变化。
1.3.1. 云 复制链接链接已复制到粘贴板!
1.3.1.1. 在 Qute template 引擎中引入的缓存部分功能 复制链接链接已复制到粘贴板!
在红帽构建的 Quarkus 3.2 中,Qte template 引擎得到了改进,可以缓存很少更改的模板的那些部分,这有助于提高效率。
要使用缓存的小节功能,请使用 quarkus-cache 扩展,其中 CacheSectionHelper 被自动注册和配置。
如需更多信息,请参阅"Qute reference"指南中的 Cached 部分。
1.3.1.2. Kubernetes 客户端升级到 6.7.2 版本 复制链接链接已复制到粘贴板!
红帽构建的 Quarkus 中的 Kubernetes 客户端已 从版本 5.12 升级到 6.7.2。此升级为开发云原生应用程序提供了增强的功能和改进支持。如需更多信息,请参阅 Kubernetes 客户端 - 从 5.x 迁移到 6.x 指南。
1.3.2. Core 复制链接链接已复制到粘贴板!
1.3.2.1. 支持构建时间分析(用户遥测) 复制链接链接已复制到粘贴板!
红帽构建的 Quarkus 3.2 引入了构建时分析功能。此功能提供有关应用程序构建期间红帽构建的 Quarkus 的使用信息,而不是在运行时期间使用。
使用分析报告提供了匿名信息,如使用哪些操作系统、JAVA 版本、构建系统和扩展。使用分析可帮助红帽更好地了解红帽构建的 Quarkus 是如何改进的。
要选择,请在 dev 模式下运行红帽构建的 Quarkus。您第一次这样做时,会询问您是否希望选择向 Quarkus 社区贡献匿名构建时间数据。当您运行红帽构建的 Quarkus 应用程序中(例如,在生产环境中)时,不会收集这些数据。
如需更多信息,请参阅 Quarkus 社区中的 Quarkus 使用分析 指南。有关收集哪些数据的更多信息,请参阅 Telemetry 数据收集通知。
1.3.2.2. Infinispan 注解缓存支持 复制链接链接已复制到粘贴板!
红帽构建的 Quarkus Infinispan 扩展现在支持声明性缓存 API,允许在 CDI 管理的 Bean 中基于注解的缓存控制。
1.3.2.3. 管理网络接口集成 复制链接链接已复制到粘贴板!
管理网络接口是管理和监控应用程序的专用频道,包括为各种管理任务(如健康检查和指标)提供端点。
1.3.2.4. 大多数 quarkus-cache 配置现在是运行时 复制链接链接已复制到粘贴板!
大多数 quarkus-cache 扩展配置已被运行时,允许您在应用程序启动时定义缓存配置。某些配置属性可以在运行时通过 API 调用来更改。
1.3.2.5. 支持多个 SMTP 邮件器 复制链接链接已复制到粘贴板!
有些应用程序要求电子邮件通过不同的 SMTP 服务器发送。在红帽构建的 Quarkus 3.2 中,您现在可以使用多个 SMTP 服务器配置多个邮件者并发送电子邮件。
如需更多信息,请参阅" 邮件参考"指南中的多邮件器配置部分。
1.3.2.6. 改进开发 UI 复制链接链接已复制到粘贴板!
红帽构建的 Quarkus 3.2 对开发 UI 进行了重大更改和增强,包括用于简化在开发期间管理和监控应用程序组件的图形界面。这有助于有效地进行日志导航、指标跟踪和端点管理。
1.3.2.7. 调度程序编程 API 复制链接链接已复制到粘贴板!
使用红帽构建的 Quarkus 3.2 版本,您可以使用新的调度程序程序 API 以编程方式调度作业。
要以编程方式调度作业,您可以注入 io.quarkus.scheduler.Scheduler。您还可以删除以编程方式计划的作业。
如需更多信息,请参阅 Quarkus "Scheduler reference" 指南中的 Programmatic scheduling 部分。
1.3.2.8. 更新工具集成 复制链接链接已复制到粘贴板!
Red Hat build of Quarkus 更新工具通过自动更新项目依赖项、配置和代码来简化应用程序的升级,以匹配最新的红帽构建的 Quarkus 版本。它简化了迁移过程,确保兼容性并减少保持最新所需的工作。
要使用该工具,请在项目目录中运行 quarkus update 命令,按照交互式提示更新您的应用程序。
Quarkus CLI 仅用于 dev 模式。红帽不支持在生产环境中使用 Quarkus CLI。
如需更多信息,请参阅 将应用程序迁移到红帽构建的 Quarkus 版本 3.2 指南。
1.3.3. data 复制链接链接已复制到粘贴板!
1.3.3.1. Hibernate ORM 扩展现在融合了自动的 IN 子句参数 padding 复制链接链接已复制到粘贴板!
在这个版本中,Hibernate Object-Relational Mapping (ORM)扩展已更改为将 automatic IN 子句参数 padding 作为默认设置。这提高了对包含 IN 子句的查询的缓存效率。
要恢复到之前的功能并取消激活此功能,您可以将 quarkus.hibernate-orm.query.in-clause-parameter-padding 的属性值设置为 false。
1.3.3.2. Hibernate ORM 升级到 6.2 版本 复制链接链接已复制到粘贴板!
红帽构建的 Quarkus 现在包含并支持 Hibernate ORM 版本 6.2,因此显著升级主要持久性层。
与版本 5.6 相比,Hibernate ORM 6.2 带来了很多改进和新功能,但也会出现一些破坏的变化。
如需更多信息,请参阅以下资源:
1.3.3.3. Hibernate Search 升级到 6.2 版本 复制链接链接已复制到粘贴板!
在红帽构建的 Quarkus 3.2 中,Hibernate Search 已升级到版本 6.2。
Hibernate Search 向红帽构建 Quarkus 应用程序提供索引和全文本搜索功能。版本 6.2 引入了对红帽构建的 Quarkus 应用程序如何处理 geo-point 字段的默认值的改进、新功能以及一些显著变化。
如需了解更多详细信息,请参阅 影响与早期版本兼容性的更改。
要了解更多有关 Hibernate Search 中的新内容的信息,请参阅 Hibernate Search 发行注记。
1.3.3.4. Oracle JDBC 驱动程序已升级至版本 23.2.0.0 复制链接链接已复制到粘贴板!
Oracle JDBC 驱动程序已升级至版本 23.2。使用 Oracle DB 的客户应该注意 Oracle JDBC 驱动程序的旧版本不一定与最新的 Oracle DB 版本兼容。
1.3.3.5. Reactive datasources 现在支持 CredentialsProvider 值 复制链接链接已复制到粘贴板!
被动数据源现在可以修改 CredentialsProvider 值,从而增强安全性和可配置性。这允许进行实时凭证更新,确保数据访问安全性,同时维护应用程序的可用性并最小化操作中断。
1.3.4. 原生 复制链接链接已复制到粘贴板!
除了改进的性能外,版本 23 提高了调试信息的生成、对 Java Flight Recorder (JFR)事件的扩展支持,以及 JFR 事件流的实验性支持。它还引入了对 Java 管理扩展(JMX)的实验性支持。
环境变量现在必须通过新的 native-image 选项 - E<env-var-key>[=<env-var-value& gt;] 传递给 Mandrel。
红帽构建的 Quarkus 原生构建器现在默认为以 x86-64-v3、 AMD64 架构上的特定于处理器的应用程序二进制接口(psABI)为目标,并引进了对新的 -march 选项的支持,用于编译旧架构更兼容的原生镜像。
如需更多信息,请参阅 Red Hat build of Quarkus 社区"Native reference"指南中的有关 缺少 CPU 功能的情况。
1.3.5. Observability(可观察性) 复制链接链接已复制到粘贴板!
1.3.5.1. OpenTelemetry SDK 自动配置 复制链接链接已复制到粘贴板!
Red Hat build of Quarkus 引入了 OpenTelemetry SDK 自动配置,简化了分布式追踪和可观察性的集成。它根据红帽构建的 Quarkus 扩展自动化 OpenTelemetry SDK 设置,消除了手动配置和优化 trace 和 metric 集合。
1.3.6. 安全性 复制链接链接已复制到粘贴板!
1.3.6.1. 现在支持测试依赖项中的自定义声明类型 复制链接链接已复制到粘贴板!
在 Red Hat build of Quarkus 3.2 中,quarkus-test-security-jwt 和 quarkus-test-security-oidc 测试依赖项已被改进,以支持自定义声明类型。
在这个版本中,您可以提高使用自定义 JWT 令牌声明的应用的测试覆盖。
1.3.6.2. 现在支持 OpenID Connect (OIDC) Front-channel Logout 复制链接链接已复制到粘贴板!
在 Red Hat build of Quarkus 中包含 OIDC 前端注销 支持补充了支持的 OIDC 后端通道注销,从而可以在分布式环境中的多个服务间注销用户。
1.3.6.3. OpenID Connect 令牌验证自定义 复制链接链接已复制到粘贴板!
在红帽构建的 Quarkus 3.2 中,提供了定制 OIDC 令牌验证过程的选项。在签名验证前,这个自定义允许预处理旧的令牌标头,通常是由 OIDC 供应商(如 Microsoft Azure)发布的。
1.3.6.4. 安全注解可用作 meta-annotations 复制链接链接已复制到粘贴板!
您可以在 meta-annotation 中组合 @TestSecurity 和 @JwtSecurity ;例如:
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.METHOD })
@TestSecurity(user = "userOidc", roles = "viewer")
@OidcSecurity(introspectionRequired = true,
introspection = {
@TokenIntrospection(key = "email", value = "user@gmail.com")
}
)
public @interface TestSecurityMetaAnnotation {
}
如果多个测试方法中需要相同的安全设置,这个组合很有用。
1.3.6.5. 简化了静态租户的 OIDC 多租户解析 复制链接链接已复制到粘贴板!
在 OIDC 多租户设置中,您可以在 application.properties 文件中设置多个租户配置,您必须指定通过注册 TenantResolver 接口实现来解析租户标识符的方式。
红帽构建的 Quarkus 3.2 引入了基于约定的静态租户解析,其中当前 HTTP 请求 URL 的最后路径段被用作租户标识符。例如,如果请求 URL 以 /keycloak 结尾,则会选择一个租户 ID 为 keycloak 的静态租户配置。
通过使用这个选项,您可以在简单的多租户配置中减少样板代码。
如需更多信息,请参阅 Quarkus "Using OpenID Connect (OIDC)多租户指南中的 配置应用程序 部分。
1.3.6.6. @RolesAllowed 中的小配置属性扩展 复制链接链接已复制到粘贴板!
红帽构建的 Quarkus @RolesAllowed 注释通过配置属性支持动态角色名称,从而增强访问控制。此注解根据 SecurityIdentity (用户角色)限制访问,提供可在不更改代码的情况下进行适应和可配置的访问控制。
1.3.7. Standards 复制链接链接已复制到粘贴板!
1.3.7.1. Eclipse MicroProfile 6 集成 复制链接链接已复制到粘贴板!
Red Hat build of Quarkus 3.2 引入了 Eclipse MicroProfile 6 的集成,它增强了微服务开发与最新的规格,以提高可观察、OpenAPI 和 JWT。
1.3.7.2. Jakarta EE 10 集成 复制链接链接已复制到粘贴板!
Red Hat build of Quarkus 3.2 引入了 Jakarta EE 10 的集成,它为开发人员提供了对当前 API 和规格的访问。
1.3.8. 工具 复制链接链接已复制到粘贴板!
1.3.8.1. 支持 Apache Maven 版本 3.9 复制链接链接已复制到粘贴板!
红帽构建的 Quarkus 3.2 添加了对 Maven 版本 3.9 的支持,以便开发人员可以使用最新的 Maven 功能。Maven 版本 3.8.6 或更高版本仍被支持。
1.3.8.2. 部署工具集成 复制链接链接已复制到粘贴板!
Quarkus 中的 quarkus deploy 命令有助于将应用程序部署到各种云平台、容器和无服务器环境中。它生成优化的容器镜像,并将应用适应目标平台,确保高效且可靠的部署。
要使用该工具,请运行 quarkus deploy,后跟所需的部署目标和配置选项,允许无缝应用程序部署而无需手动配置。
1.3.8.3. 红帽构建的 Quarkus CLI 增强用于构建和推送容器镜像 复制链接链接已复制到粘贴板!
在红帽构建的 Quarkus 3.2 中,构建和推送容器镜像现在可以更容易。如需更多信息,请参阅使用 quarkus 命令行界面的"Building Red Hat build of Quarkus apps"指南中的 容器镜像 部分。
1.3.8.3.1. 构建容器镜像 复制链接链接已复制到粘贴板!
例如,您不再需要调整 pom.xml 项目配置来构建 docker 镜像来添加或删除容器镜像扩展。相反,您只需要运行以下命令:
quarkus image build docker
1.3.8.3.2. 推送容器镜像 复制链接链接已复制到粘贴板!
image push 命令与 image build 命令类似,并提供一些基本选项来将镜像推送到目标容器 registry。
quarkus image push --registry=<image registry> --registry-username=<registry username> --registry-password-stdin
Quarkus CLI 仅用于 dev 模式。红帽不支持在生产环境中使用 Quarkus CLI。
有关红帽构建的 Quarkus CLI 镜像命令以及如何使用它们的详细列表,请查看以下资源:
1.3.9. Web 复制链接链接已复制到粘贴板!
1.3.9.1. 对 SmallRye GraphQL 的联邦支持 复制链接链接已复制到粘贴板!
Quarkus 的 SmallRye GraphQL 现在支持 Apollo Federation 2 子风险,启用联合 GraphQL 模式创建。这通过整合自独立部署的 GraphQL 服务的数据来实现统一的 GraphQL API,简化了复杂的应用程序开发。
1.3.9.2. 使用 Panache 扩展在 REST 数据中命名查询过滤 复制链接链接已复制到粘贴板!
在红帽构建的 Quarkus 的 REST 数据中使用 Panache 扩展过滤,通过向 REST 端点应用预定义的查询来简化数据检索,提高性能和代码可维护性,以便通过 REST API 有效地进行数据库交互。
在列出实体时,您可以通过 @NamedQuery 注释根据实体中定义的命名查询过滤。
指定查询的示例
@Entity
@NamedQuery(name = "Person.containsInName", query = "from Person where name like CONCAT('%', CONCAT(:name, '%'))")
public class Person extends PanacheEntity {
String name;
}
接下来,在使用生成的资源列出实体时,您可以设置 名为Query 的查询参数。使用所需查询的名称,如调用 http://localhost:8080/people?namedQuery=Person.containsInName&name=ter,这将检索所有具有"ter"名称的人员。
1.3.9.3. gRPC 异常处理 复制链接链接已复制到粘贴板!
gRPC 异常处理有助于 gRPC 服务中更强大的错误管理,增强应用程序的可靠性和调试基于 gRPC 的应用程序。
此功能允许将错误消息作为跟踪器传递。当出现问题而不是通用"服务器异常"时,gRPC 客户端将从服务器收到特定的错误消息。
1.3.9.4. gRPC 扩展迁移到 Vert.x gRPC 复制链接链接已复制到粘贴板!
gRPC 扩展到 Vert.x 的实施增强了与 Vert.x 生态系统的协调,为使用 gRPC 通信开发微服务提供了有效的方法。
这个实现允许单个 HTTP 服务器配置,从 Red Hat build of Quarkus 安全配置中删除重复性。
1.3.9.5. 创建 Reactive REST 客户端的编程 API 复制链接链接已复制到粘贴板!
在以前的版本中,您只能在 application.properties 文件中配置 Reactive REST 客户端来创建 Reactive REST 客户端。如果要创建动态客户端,此方法可能有问题。
使用红帽构建的 Quarkus 3.2,您现在可以使用新的 Quarkus 特定 API QuarkusRestClientBuilder 以编程方式创建 Reactive REST 客户端。
QuarkusRestClientBuilder 接口使用额外的配置选项创建 Reactive REST 客户端。
如需更多信息,请参阅 Quarkus "Using the REST Client" 指南中的 Programmatic client creation with QuarkusRestClientBuilder 部分。
1.3.9.6. 可以自定义 RESTEasy Reactive HTTP 响应标头和状态代码 复制链接链接已复制到粘贴板!
在红帽构建的 Quarkus 3.2 中,RESTEasy Reactive 客户端被改进,以在流传输响应时提供更大的灵活性。
在这个版本中,您可以自定义 HTTP 标头、HTTP 响应和状态代码。
如需更多信息,请参阅 Quarkus "Writing REST services with RESTEasy Reactive" 指南中的 自定义标头和状态 部分。
1.3.9.7. 现在支持 REST Client Reactive 上的 @Encoded 注释 复制链接链接已复制到粘贴板!
Red Hat build of Quarkus 3.2 引入了对 REST Client Reactive 的 @Encoded 注解的支持。在这个版本中,@Encoded 注释会影响参数解码,如 PATH 和 QUERY 参数。
如需更多信息,请参阅以下资源:
1.4. 支持和兼容性 复制链接链接已复制到粘贴板!
您可以找到有关与 Red Hat build of Quarkus 3.2 兼容的支持的配置和工件的详细信息,以及红帽客户门户网站中的高级别支持生命周期策略,如下所示:
- 有关支持的配置、OpenJDK 版本和经过测试的集成列表,请参阅 Red Hat build of Quarkus 支持的配置。
- 有关 Red Hat build of Quarkus 支持的 Maven 工件、扩展和 BOM 列表,请参阅 红帽构建的 Quarkus 组件详情。
- 有关所有红帽产品的正式发布、全面支持和维护支持日期,请参阅 Red Hat Application Services 产品更新和支持政策。
1.4.1. 产品更新和支持生命周期政策 复制链接链接已复制到粘贴板!
在 Red Hat build of Quarkus 中,功能版本可以是主版本,也可以是引入新功能或支持的次版本。红帽构建的 Quarkus 发行版本号与 Quarkus 社区项目的 Long-Term Support (LTS)版本直接一致。红帽构建的 Quarkus 功能发行版本的版本号与它所基于的 Quarkus 社区版本匹配。如需更多信息,请参阅 Quarkus 博客文章的 Long-Term Support (LTS)。
红帽不会为社区版本的每个版本发布 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 3.2 包括在以下 Red Hat OpenShift Container Platform 版本: 4.15、4.12 和 Red Hat Enterprise Linux 8.8 中。
有关支持的配置列表,登录到红帽客户门户网站并查看红帽知识库解决方案 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 3.2 中被弃用。这个版本包括了并提供支持。但是,不会对这些组件和功能进行任何增强,以后可能会删除它们。
有关本发行版本中弃用的组件和功能列表,请登录到红帽客户门户网站并查看 Red Hat build of Quarkus 组件详情页面。
1.5.1. 弃用了对 Java 11 的 Red Hat build of Quarkus 支持 复制链接链接已复制到粘贴板!
在 Red Hat build of Quarkus 3.2 中,对 Java 11 的支持已弃用,计划在以后的发行版本中删除。虽然 Red Hat build of Quarkus 3.2 仍然支持 Java 11 作为最小版本,但开始使用 Java 17。
1.6. 技术预览 复制链接链接已复制到粘贴板!
本节列出了在红帽构建的 Quarkus 3.2 中作为技术预览提供的功能和扩展。
技术预览功能不被红帽产品服务级别协议(SLA)支持,且其功能可能并不完善,红帽建议您不要在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能的更多信息,请参阅 技术预览功能范围。
1.6.1. 增强的组件测试 复制链接链接已复制到粘贴板!
Red Hat build of Quarkus 3.2 引进了名为 QuarkusComponentTestExtension 的 JUnit 扩展作为技术预览功能。
这个新扩展旨在帮助简化 CDI 组件的测试以及其依赖项的模拟,并包括在 quarkus-junit5-component 依赖项中。
如需更多信息,请参阅 Red Hat build of Quarkus "Testing your application" 指南中的 Testing components 部分。
1.6.2. Hibernate Reactive 升级到版本 2 复制链接链接已复制到粘贴板!
在这个版本中,Red Hat build of Quarkus 依赖于 Hibernate Reactive 2 扩展而不是 Hibernate Reactive 1。这个变化意味着行为和数据库模式期望有一些变化,它们与早期版本不兼容。大多数更改都与 Hibernate Reactive 2 相关,具体取决于 Hibernate ORM 6.2 而不是 Hibernate ORM 5.6。
quarkus-opentelemetry-exporter-otlp 扩展是 quarkus-opentelemetry 扩展的一部分。此统一扩展提供 OpenTelemetry 协议(OTLP)导出器功能,而无需额外的设置,从而简化 OTLP 导出器使用情况。
1.6.4. 支持在数据库中存储事务日志 复制链接链接已复制到粘贴板!
使用红帽构建的 Quarkus 3.2,对于持久性存储不可用的云环境,比如当应用程序容器无法使用持久性卷时,您可以使用 Java 数据库连接(JDBC)数据源配置事务管理,将事务日志存储在数据库中。
此配置仅与 Jakarta 事务 相关。
虽然使用数据库存储事务日志有几个优点,但您可能会注意到与使用文件系统存储日志相比的性能降低。
但是,在云原生应用程序中,务必要仔细评估事务。narayana-jta 扩展(管理这些事务)需要稳定的存储、唯一可重复使用的节点标识符和一个稳定 IP 地址才能正常工作。JDBC 对象存储提供稳定的存储,但用户仍必须计划如何满足其他两个要求。
要使用 JDBC 数据源存储事务日志,请配置 quarkus.transacion-manager.object-store.<property> 属性,其中 & lt;property > 可以是以下选项之一:
-
Type(字符串):将此属性配置为jdbc,以启用使用红帽构建的 Quarkus JDBC 数据源来存储事务日志。默认值为file-system。 -
Datasource(字符串):指定事务日志存储的数据源名称。如果没有为datasource属性提供值,Red Hat build of Quarkus 会使用默认的数据源。 -
可以创建(布尔值):当设为true时,如果事务日志表尚不存在,则会自动创建。默认值为false。 -
drop-table(布尔值):当设为true时,如果表已存在,则在启动时将丢弃这些表。默认值为false。 -
table-prefix(字符串):指定相关表名称的前缀。默认值为quarkus_。
还请考虑以下点:
-
您可以通过将
create-table属性设置为true,在初始设置中手动创建事务日志表。 JDBC 数据源和 ActiveMQ Artemis 允许连接和自动注册
XAResourceRecovery实例。但请注意,红帽构建的 Quarkus 支持不包括在数据库中存储事务日志的以下点:
-
JDBC datasources 是
quarkus-agroal扩展的一部分,要求设置以下应用属性,如下所示:quarkus.datasource.jdbc.transactions=XA. ActiveMQ Artemis (社区客户端)是
quarkus-pooled-jms扩展的一部分,并且要求设置下列应用属性,如下所示:quarkus.pooled-jms.transaction=XA。如需更多信息,请参阅 CEQ-4878。
-
JDBC datasources 是
-
为确保在应用程序崩溃或失败时数据保护,请使用
quarkus.transaction-manager.enable-recovery=true配置启用事务崩溃恢复。
要临时解决这个问题 Agroal 在运行事务检查时具有不同的视图,请为负责将事务日志写入的数据源设置数据源事务类型:
quarkus.datasource.<TX_LOG>.jdbc.transactions=disabled
这个示例使用 TX_LOG 作为数据源名称。
1.7. 影响与早期版本兼容性的更改 复制链接链接已复制到粘贴板!
这部分论述了红帽构建的 Quarkus 3.2 中的更改,它会影响与之前产品版本构建的应用程序的兼容性。
查看这些破坏的变化,并执行必要的步骤,以确保应用程序在将其更新至 Quarkus 3.2 的红帽构建后继续运行。
要自动执行许多这些更改,请使用 quarkus update 命令将项目更新至最新的红帽构建的 Quarkus 版本。
1.7.1. 云 复制链接链接已复制到粘贴板!
Kubernetes 客户端已从 5.12 升级到 6.7.2。如需更多信息,请参阅 Kubernetes 客户端 - 从 5.x 迁移到 6.x 指南。
1.7.1.2. 改进了生成基于 TLS 的容器端口的逻辑 复制链接链接已复制到粘贴板!
Red Hat build of Quarkus 3.2 引入了 Kubernetes 扩展如何生成基于 TLS 的容器端口的更改。
早期版本会自动将名为 https 的容器端口添加到生成的部署资源。这个方法可能会造成问题,特别是在没有配置 SSL/TLS 时,导致端口无法正常工作。
在 3.2 及更高版本中,Kubernetes 扩展默认不添加名为 https 的容器端口。只有在执行以下步骤时,才会添加容器端口:
-
您可以在
applicationprerequisites 属性。.properties文件中指定任何相关的 quarkus.http.ssl -
您可以在
application.properties文件中设置quarkus.kubernetes.ports.https.tls=true。
1.7.1.3. 删除一些 Kubernetes 和 OpenShift 属性 复制链接链接已复制到粘贴板!
在这个版本中,一些之前已弃用的 Kubernetes 和 OpenShift 相关的属性已被删除。使用新的对应项替换它们。
| 删除的属性 | 新属性 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
另外,在这个版本中,没有 quarkus. 前缀的属性将被忽略。例如,在这个版本之前,如果您添加了 kubernetes.name 属性,它被映射到 quarkus.kubernetes.name。为了避免异常,如从 2.16.0.Final 升级到 2.16.1 时java.lang.ClassCastException。Final #30850 将不再进行。
当您继续在 Quarkus 上下文中使用 Kubernetes 和 OpenShift 时,请使用新属性,并在需要时包含 quarkus. 前缀。
1.7.2. Core 复制链接链接已复制到粘贴板!
1.7.2.1. 升级到 Jandex 3 复制链接链接已复制到粘贴板!
在这个版本中,Jandex 成为 SmallRye 项目的一部分,将所有 Jandex 项目整合到单个存储库中: https://github.com/smallrye/jandex/。因此,Jandex Maven 插件的新版本随 Jandex 内核一起提供。
此发行版本还会更改 Maven 协调。将旧的协调替换为新协调。
| 旧协调 | 新协调 |
|
|
|
|
|
|
如果使用 Maven Enforcer 插件,请将其配置为对 org.jboss:jandex 的任何依赖项。Gradle 用户提供了一个等同的插件。
1.7.2.2. Jandex API 用户的迁移路径 复制链接链接已复制到粘贴板!
Jandex 3 包含很多有趣的功能和改进。不幸的是,这些更改需要一些破坏的更改。以下是推荐的迁移路径:
-
升级到 Jandex 2.4.3.Final。此版本为 Jandex 3.0.0 中更改的一些方法提供了替换。例如,不使用
ClassInfo.annotations (),使用annotationsMap (),并将MethodInfo.parameters ()替换为parameterTypes ()。使用 Jandex 标记为已弃用的任何方法停止。 -
确保不使用 return 值
Indexer.index ()或indexClass ()。 -
如果您根据 Jandex 2.4.3.Final 编译代码,它可以针对 2.4.3.Final 和 3.0.0 运行。然而,这有一些例外。如果您实现
IndexView接口,或者在某些情况下,依赖UnresolvedTypeVariable类,则无法使项目与 Jandex 2.4.3 和 Jandex 3 兼容。 -
升级到 Jandex 3.0.0.如果您实施
IndexView接口,请确保实施添加的方法。如果您广泛使用 JandexType层次结构,请验证是否需要处理TypeVariableReference,它现在用来代表递归类型变量。
在此发行版本中,Jandex 引入了一个新的文档站点。尽管它是正在进行的工作,但随着时间的推移将变得更加全面。如需更多信息,您还可以参考改进的 Jandex Javadoc。
1.7.2.3. 删除 io.quarkus.arc.config.ConfigProperties 注解 复制链接链接已复制到粘贴板!
在这个版本中,之前弃用的 io.quarkus.arc.config.ConfigProperties 注解已被删除。
反之,使用 io.smallrye.config.ConfigMapping 注解来注入多个相关的配置属性。
如需更多信息,请参阅 "Mapping configuration to objects" 指南中的 @ConfigMapping 部分。
1.7.2.4. 现在,在私有方法上声明的拦截器绑定注解会生成构建失败 复制链接链接已复制到粘贴板!
在这个版本中,不支持在私有方法上声明拦截器绑定注解,并触发构建失败;例如:
jakarta.enterprise.inject.spi.DeploymentException: @Transactional does not affect method com.acme.MyBean.myMethod() because the method is private. [...]
在早期版本中,声明私有方法上的拦截器绑定注解仅在日志中触发警告,但会被忽略。
这个支持更改旨在防止在私有方法中意外使用拦截器注解,因为它们没有影响,并可能导致混淆。
要解决这一更改,请从私有方法中删除此类注释。如果删除这些注解不可行,您可以将配置属性 quarkus.arc.fail-on-intercepted-private-method 设置为 false。此设置将系统恢复到之前的行为,其中只记录警告。
1.7.2.5. 删除 @AlternativePriority 注释 复制链接链接已复制到粘贴板!
此发行版本删除了之前已弃用的 @AlternativePriority 注释。将它替换为 @Alternative 和 @Priority 注释。
示例: Removed 注解
@AlternativePriority(1)
示例:替换注解
@Alternative
@Priority(1)
使用带有 @ .Priority 而不是 Priority 注解的 jakarta.annotationio.quarkus.arc.Priority,该注解已弃用,并计划在以后的发行版本中删除。两个注解都执行相同的功能。
1.7.2.6. 测试更改:修复 Mockito 子类模拟制造商 复制链接链接已复制到粘贴板!
此发行版本更新了 Mockito 版本 5.x。值得注意的是,Mockito 将默认的模拟制造商切换为 50.0 发行版中 的 内联。
但是,要保留自 Quarkus 1.x 起熟悉了模拟行为 Quarkus 用户,并防止出现大量 测试套件的内存泄漏,Quarkus 3.0 将 mockmaker 修复到 子类,而不是 内联,直到后者被完全支持。
如果要强制使用 内联 模拟制造商,请按照以下步骤执行:
将以下排除项添加到
pom.xml中:<dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-junit5-mockito</artifactId> <exclusions> <exclusion> <groupId>org.mockito</groupId> <artifactId>mockito-subclass</artifactId> </exclusion> </exclusions> <dependency>-
在您的依赖项中添加
mockito-core。 -
Mockito 5.3 删除了
mockito-inline工件:您可以从依赖项中删除它。
1.7.2.7. 更新至最低支持的 Maven 版本 复制链接链接已复制到粘贴板!
Quarkus 已嵌套其 Maven 插件,以支持 Maven 3.9。因此,Quarkus 支持的最小 Maven 版本从 3.6.2 提升到 3.8.6 或更高版本。确保您的开发环境已相应地更新,以从最新的改进和功能中受益。
1.7.2.8. 删除 quarkus-bootstrap-maven-plugin 复制链接链接已复制到粘贴板!
在这个版本中,之前弃用的 io.quarkus:quarkus-bootstrap-maven-plugin Maven 插件已被删除。
此插件仅用于 Quarkus 扩展开发。因此,如果您要开发自定义 Quarkus 扩展,您必须将工件 ID 从 io.quarkus:quarkus-bootstrap-maven-plugin 改为 io.quarkus-extension-maven-plugin。
这个更改专门用于自定义扩展开发。对于标准应用程序开发,您可以使用 quarkus-maven-plugin 插件。
1.7.2.9. Mutiny 2 移至 Java 流 复制链接链接已复制到粘贴板!
Mutiny 是一个被动编程库,其版本 1.x 基于 org.reactivestream 接口,而版本 2 基于 java.util.concurrent.Flow。这些 API 相同,但软件包名称已更改。
Mutiny 提供在 Mutiny 2 (Flow API)和其他带有传统重新主动流 API 的其他库之间桥接的适配器。
1.7.3. data 复制链接链接已复制到粘贴板!
1.7.3.1. 使用 Panache 方法删除 Hibernate ORM 复制链接链接已复制到粘贴板!
在这个 3.2 发行版本中,以下来自使用 Panache 和 Hibernate ORM 的 Hibernate ORM 方法已被删除:
-
io.quarkus.hibernate.orm.panache.PanacheRepositoryBase#getEntityManager(Class<?> clazz) -
io.quarkus.hibernate.orm.panache.kotlin.PanacheRepositoryBase#getEntityManager (clazz: KClass<Any>)
反之,使用 Panache.getEntityManager (Class<?> clazz) 方法。
1.7.3.2. Hibernate ORM: Automated IN 子句参数 padding 中的增强 复制链接链接已复制到粘贴板!
在这个版本中,Hibernate Object-Relational Mapping (ORM)扩展已更改为将 automatic IN 子句参数 padding 作为默认设置。这提高了对包含 IN 子句的查询的缓存效率。
要恢复到之前的功能并取消激活此功能,您可以将 quarkus.hibernate-orm.query.in-clause-parameter-padding 的属性值设置为 false。
1.7.3.3. 新依赖项:Hibernate Reactive 2 和 Hibernate ORM 6.2 复制链接链接已复制到粘贴板!
在这个版本中,Quarkus 依赖于 Hibernate Reactive 2 扩展而不是 Hibernate Reactive 1。这个变化意味着行为和数据库模式期望有一些变化,它们与早期版本不兼容。
大多数更改都与 Hibernate Reactive 2 相关,具体取决于 Hibernate ORM 6.2 而不是 Hibernate ORM 5.6。
Hibernate Reactive 2 扩展在红帽构建的 Quarkus 3.2 中作为技术预览提供。
如需更多信息,请参阅以下资源:
1.7.3.4. Hibernate 搜索更改 复制链接链接已复制到粘贴板!
在 GeoPoint 字段中对 projectable 和 sortable 的默认设置的更改
在这个 3.2 发行版本中,Hibernate Search 6.2 更改了为 GeoPoint 字段处理默认值的方式。
假设您的 Hibernate Search 映射包含 GeoPoint 字段,该字段使用 projectable 选项的默认值,以及 排序选项的默认值或 。在这种情况下,因为这些字段中缺少 doc 值,Elasticsearch 模式在启动时验证会失败。
Sortable.NO
要防止这个失败,请完成以下步骤之一:
-
通过将
projectable = Projectable.NO添加到相关GeoPoint字段的映射注解来恢复到之前的默认值。 -
重新创建 Elasticsearch 索引并重新索引您的数据库。执行此操作的最简单方法是将
MassIndexer与dropAndCreateSchemaOnStart (true)搭配使用。
如需更多信息,请参阅 "Hibernate Search 6.2.1.Final: Migration Guide from 6.1" 中的数据格式和模式更改 部分。
弃用或重命名的配置属性
在这个 3.2 发行版本中,quarkus.hibernate-search-orm.automatic-indexing.synchronization.strategy 属性已弃用,并计划在以后的版本中删除。改为使用 quarkus.hibernate-search-orm.indexing.plan.synchronization.strategy 属性。
另外,quarkus.hibernate-search-orm.automatic-indexing.enable-dirty-check 属性已被弃用,计划在以后的版本中删除。没有可替换它的替代选择。删除后,计划 Search 会在事务修改对象字段后始终触发重新索引。也就是说,如果事务使字段"dirty"。
如需更多信息,请参阅"Hibernate Search 6.2.1.Final: Migration Guide from 6.1"中的 配置更改 部分。
在这个版本中,Quarkus 不支持手动创建 ValidatorFactory 实例。反之,您必须使用 Validation.buildDefaultValidatorFactory () 方法,它返回由 Quarkus 管理的 ValidatorFactory 实例,您通过上下文和依赖注入(CDI)注入。此更改的主要原因是,必须仔细设计 ValidatorFactory 才能在原生可执行文件中工作。在此发行版本中,您仍然可以手动创建 ValidatorFactory 实例,并在可能正常工作的情况下自行处理它。此更改旨在提高与组件的兼容性,创建自己的 ValidatorFactory。
如需更多信息,请参阅以下资源:
- "使用 Hibernate Validator"指南中的 Hibernate Validator 扩展和 CDI 部分。
- "Validation with Hibernate Validator"指南的 ValidatorFactory 和原生可执行文件 部分。
- 获取"Hibernate Validator 8.0.0.Final - Jakarta Bean Validation Reference Implementation: 参考指南"的验证器实例。
1.7.3.6. quartz 作业类名称更改 复制链接链接已复制到粘贴板!
如果您使用 Java 数据库连接(JDBC)将 Quartz 扩展 的作业存储在数据库中,请运行以下查询来更新 JOB_DETAILS 表中的作业类名称:
UPDATE JOB_DETAILS SET JOB_CLASS_NAME = 'io.quarkus.quartz.runtime.QuartzSchedulerImpl$InvokerJob' WHERE JOB_CLASS_NAME = 'io.quarkus.quartz.runtime.QuartzScheduler$InvokerJob';
QuarkusTransaction.run 和 QuarkusTransaction.call 方法已弃用,现在使用新的、更明确的方法。
更新依赖于这些已弃用方法的代码,如下所示:
之前
QuarkusTransaction.run(() -> { ... });
QuarkusTransaction.call(() -> { ... });
After
QuarkusTransaction.requiringNew().run(() -> { ... });
QuarkusTransaction.requiringNew().call(() -> { ... });
之前
QuarkusTransaction.run(QuarkusTransaction.runOptions()
.semantic(RunOptions.Semantic.REQUIRED),
() -> { ... });
QuarkusTransaction.call(QuarkusTransaction.runOptions()
.semantic(RunOptions.Semantic.REQUIRED),
() -> { ... });
After
QuarkusTransaction.joiningExisting().run(() -> { ... });
QuarkusTransaction.joiningExisting().call(() -> { ... });
之前
QuarkusTransaction.run(QuarkusTransaction.runOptions()
.timeout(10)
.exceptionHandler((throwable) -> {
if (throwable instanceof SomeException) {
return RunOptions.ExceptionResult.COMMIT;
}
return RunOptions.ExceptionResult.ROLLBACK;
}),
() -> { ... });
QuarkusTransaction.call(QuarkusTransaction.runOptions()
.timeout(10)
.exceptionHandler((throwable) -> {
if (throwable instanceof SomeException) {
return RunOptions.ExceptionResult.COMMIT;
}
return RunOptions.ExceptionResult.ROLLBACK;
}),
() -> { ... });
After
QuarkusTransaction.requiringNew()
.timeout(10)
.exceptionHandler((throwable) -> {
if (throwable instanceof SomeException) {
return RunOptions.ExceptionResult.COMMIT;
}
return RunOptions.ExceptionResult.ROLLBACK;
})
.run(() -> { ... });
QuarkusTransaction.requiringNew()
.timeout(10)
.exceptionHandler((throwable) -> {
if (throwable instanceof SomeException) {
return RunOptions.ExceptionResult.COMMIT;
}
return RunOptions.ExceptionResult.ROLLBACK;
})
.call(() -> { ... });
如需更多信息,请参阅 "Using transaction in Quarkus" 指南中的 Programmatic method 部分。
1.7.3.8. 重命名 Narayana 事务管理器属性 复制链接链接已复制到粘贴板!
在这个版本中,quarkus.transaction-manager.object-store-directory 配置属性被重命名为 quarkus.transaction-manager.object-store.directory。通过将旧属性名称替换为新属性来更新您的配置。
1.7.4. 消息传递 复制链接链接已复制到粘贴板!
此发行版本删除了之前为 smallrye-reactive-messaging-kafka 扩展已弃用的 vertx-kafka-client 依赖项。虽然它不用于客户端实现,vertx-kafka-client 为 io.vertx.kafka.buffer.Buffer 软件包提供了默认的 Kafka Serialization 和 Deserialization (SerDes),io.vertx.core.json.JsonObject, 和 io.vertx.core.json.JsonArray 类型来自 io.vertx.kafka.client.serialization 软件包。
如果您需要这个依赖项,您可以获取 io.quarkus.kafka.client.serialization 软件包中上述类型的 SerDe。
1.7.5. 原生 复制链接链接已复制到粘贴板!
1.7.5.1. 原生编译 - 原生可执行文件和 .so 文件 复制链接链接已复制到粘贴板!
在这个版本中,GraalVM/Mandrel 中的更改会影响对 .so 文件(如 Java Abstract Window Toolkit (AWT)扩展)的扩展。
在使用这些扩展时,您必须将对应的 .so 文件复制到原生容器中,例如:
COPY --chown=1001:root target/*.so /work/
COPY --chown=1001:root target/*-runner /work/application
在这种情况下,AWT 扩展提供无头服务器端镜像处理功能,而不是 GUI 功能。
1.7.5.2. 原生编译 - 围绕缺失的 CPU 功能进行工作 复制链接链接已复制到粘贴板!
在这个 3.2 发行版本中,如果您在最新的机器上构建原生可执行文件并在较旧的机器上运行它们,您可能会在启动应用程序时遇到以下故障:
The current machine does not support all of the following CPU features that are required by the image: [CX8, CMOV, FXSR, MMX, SSE, SSE2, SSE3, SSSE3, SSE4_1, SSE4_2, POPCNT, LZCNT, AVX, AVX2, BMI1, BMI2, FMA].
Please rebuild the executable with an appropriate setting of the -march option.
此错误消息表示,原生编译使用了运行应用的 CPU 不支持的更多高级指令集。要临时解决这个问题,请在 application.properties 文件中添加以下行:
quarkus.native.additional-build-args=-march=compatibility
然后,重建您的原生可执行文件。此设置强制原生编译使用旧的指令集,从而增加兼容性几率,但会降低优化。
要显式定义目标架构,请运行 native-image -march=list 来获取受支持的配置列表。然后,指定一个目标架构 ; 例如:
quarkus.native.additional-build-args=-march=x86-64-v4
如果您在旧的 AMD64 主机时遇到问题,请在使用 -march=x86-64-v2 前尝试 -march= x86-64-v2。
原生 镜像构建选项的 GraalVM 文档指出 "[the -march 参数生成] 指令用于特定机器类型。[This parameter] 默认为 AMD64 上的 x86-64-v3 和 AArch64 上的 armv8-a。使用 -march=compatibility 实现最佳兼容性,如果在同一台机器上或具有相同 CPU 功能的机器上部署原生可执行文件,则使用 -march=native 以获得最佳性能。要列出所有可用机器类型,请使用 -march=list "。
-march 参数仅适用于 GraalVM 23 及更高版本。
1.7.5.3. 测试更改:删除一些注解 复制链接链接已复制到粘贴板!
在这个版本中,之前弃用的 @io.quarkus.test.junit.NativeImageTest 和 @io.quarkus.test.junit.DisabledOnNativeImageTest 注解是 rimage::images/ref_changes- that-affect-backward-compatibility-88d2f.png[].使用新的对应项替换它们。
| 删除的注解 | 新注解 |
|---|---|
|
|
|
|
|
|
替换注解的功能等同于删除的注解。
1.7.6. Observability(可观察性) 复制链接链接已复制到粘贴板!
1.7.6.1. 弃用的 OpenTracing 驱动程序被 OpenTelemetry 替代 复制链接链接已复制到粘贴板!
在这个版本中,对 OpenTracing 驱动程序的支持已弃用。计划在以后的 Quarkus 版本中删除 OpenTracing 驱动程序。
在这个版本中,SmallRye GraphQL 扩展已替换为 OpenTelemetry 的 OpenTracing 集成。因此,在使用 OpenTracing 时,扩展不再为 GraphQL 操作生成 span。
另外,在这个版本中,quarkus.smallrye-graphql.tracing.enabled 配置属性已过时,并已被删除。相反,SmallRye GraphQL 扩展会在存在 OpenTelemetry 扩展时自动生成 span。
更新 Quarkus 应用程序以使用 OpenTelemetry,以便它们保持与将来的 Quarkus 版本兼容。
1.7.6.2. Micrometer 中的默认指标格式现在与 Prometheus 保持一致 复制链接链接已复制到粘贴板!
在这个 3.2 发行版本中,Micrometer 扩展默认以 application/openmetrics-text 格式导出指标,与 Prometheus 标准一致。此更改有助于使您的数据更易于阅读和解释。
要以较早格式获取指标,您可以将 Accept 请求标头改为 text/plain。例如,使用 'curl 命令:
curl -H "Accept: text/plain" localhost:8080/q/metrics/
1.7.7. 安全性 复制链接链接已复制到粘贴板!
1.7.7.1. 删除 CORS 过滤器默认支持将通配符用作源 复制链接链接已复制到粘贴板!
跨原始资源共享(CORS)过滤器的默认行为已进行了显著更改。在早期版本中,当启用 CORS 过滤器时,它默认支持所有原始卷。在这个 3.2 发行版本中,不再支持所有原始卷。现在,如果要允许所有原始卷,您必须明确将其配置为这样做。
在进行全面的评估后,如果您确定所有源都需要支持,请使用以下方法之一配置系统:
quarkus.http.cors=true
quarkus.http.cors.origins=/.*/
相同的原始请求会获得支持,而无需 quarkus.http.cors.origins 配置。因此,只有在允许信任的第三方源请求时,调整 quarkus.http.cors.origins 才会变得至关重要。在这种情况下,启用所有原始卷可能会造成不必要的风险。
请谨慎使用此设置来保持最佳的系统安全性。
1.7.7.2. OpenAPI CORS 支持更改 复制链接链接已复制到粘贴板!
在这个 3.2 发行版本中,OpenAPI 更改了其跨原始资源共享(CORS)设置,不再默认启用通配符(*)原始支持。这个更改有助于防止 OpenAPI 文档的潜在泄漏,提高应用程序的整体安全性。
虽然您可以在 dev 模式中启用通配符源支持,但务必要考虑潜在的安全影响。避免在生产环境中启用所有源,因为它会将您的应用程序暴露给安全威胁。确保您的 CORS 设置与您的生产环境的建议安全最佳实践一致。
1.7.7.3. 默认加密 OIDC 会话 Cookie 复制链接链接已复制到粘贴板!
在这个 3.2 发行版本中,在 OIDC 授权代码流完成后创建的 OpenID Connect (OIDC)会话 cookie 被默认加密。在大多数情况下,您不太可能注意到这个变化。
但是,如果 mTLS 或 private_key_jwt 验证方法 - OIDC 客户端私钥为 JSON Web Token (JWT)签名 - 在 Quarkus 和 OIDC 供应商之间使用,则会生成一个内存加密密钥。这个密钥生成可能会导致一些 pod 无法解密会话 Cookie,特别是在处理多个请求的应用程序中。当尝试解密 Cookie 的 pod 不是加密它的 pod 时,可能会出现这种情况。
如果出现问题,请注册 32 个字符的加密 secret;例如:
quarkus.oidc.token-state-manager.encryption-secret=eUk1p7UB3nFiXZGUXi0uph1Y9p34YhBU
加密会话 Cookie 不能超过 4096 字节,这可能会导致一些浏览器忽略它。如果出现这种情况,请尝试一个或多个以下步骤:
-
设置
quarkus.oidc.token-state-manager.split-tokens=true,以便在单独的 Cookie 中存储 ID、访问和刷新令牌。 -
如果不需要使用访问令牌作为角色源来请求
UserInfo或将其传播到下游服务,则设置quarkus.oidc.token-state-manager.strategy=id-refresh-tokens。 -
注册自定义
quarkus.oidc.TokenStateManagerContext 和 Dependency Injection (CDI) bean,并将替代优先级设置为1。
如果应用程序用户从可信网络访问 Quarkus 应用程序,请通过应用以下配置来禁用会话 Cookie 加密:
quarkus.oidc.token-state-manager.encryption-required=false
1.7.7.4. 用于 OIDC 会话 Cookie 的默认 SameSite 属性设置为 Lax 复制链接链接已复制到粘贴板!
在这个版本中,对于 Quarkus OpenID Connect (OIDC)扩展,会话 Cookie SameSite 属性默认设置为 Lax。
在一些较早版本的 Quarkus 中,OIDC 会话 Cookie SameSite 属性默认设置为 Strict。此设置引入了不同浏览器处理会话 Cookie 的不可预测性。
1.7.7.5. 默认情况下验证 OIDC ID 令牌受众声明 复制链接链接已复制到粘贴板!
在这个 3.2 发行版本中,默认验证 OpenID Connect (OIDC) ID 令牌 aud (audience)声明。这个声明必须与 OIDC 规格的要求相等配置的 quarkus.oidc.client-id 属性的值。
要覆盖预期的 ID 令牌 audience 值,请设置 quarkus.oidc.token.audience 配置属性。如果您处理没有设置 ID 令牌声明的不合规 OIDC 供应商,您可以将 quarkus.oidc.token.audience 设置为 任何。
将 quarkus.oidc.token.audience 设置为降低 3.2 应用程序的安全性。
1.7.7.6. 删除 JWT 密钥和密钥存储的默认密码 复制链接链接已复制到粘贴板!
在此版本之前,Quarkus 使用 password 作为 JSON Web Token (JWT)密钥和密钥存储的默认密码。在这个版本中,这个默认值已被删除。
如果您仍然使用默认密码,请设置一个新值来替换 application.properties 文件中的以下属性 的密码 :
quarkus.oidc-client.credentials.jwt.key-store-password=password
quarkus.oidc-client.credentials.jwt.key-password=password
1.7.8. Web 复制链接链接已复制到粘贴板!
1.7.8.1. 对 RESTEasy Reactive 多部分的更改 复制链接链接已复制到粘贴板!
在这个版本中,以下更改会影响 RESTEasy Reactive 中的多部分支持:
-
在此版本之前,您可以使用语法来捕获所有文件上传,而不考虑参数名称
:@RestForm List<FileUpload> all,但这不是模糊的,但这不是直观的。现在,此表单只获取名为all的参数,就像其它类型的所有其他形式元素一样,您必须使用以下形式来捕获每个参数,而不考虑其名称:@RestForm (FileUpload.ALL) List<FileUpload> all。 -
多部分表单参数支持已添加到
@BeanParam中。@MultipartForm注释现已弃用。使用@BeanParam而不是@MultipartForm。 -
@BeanParam现在是可选的,对于任何非annotated method 参数,它带有任何@Rest*或@*Param注解的字段。 -
多部分元素不再限制为封装在
@MultipartForm-annotated 类中:它们可用作方法端点参数和端点类字段。 -
现在,多部分元素默认为
@PartType (MediaType.TEXT_PLAIN)MIME 类型,除非它们是FileUpload,Path,File,byte[], 或InputStream。 -
MediaType.TEXT_PLAINMIME 类型的多部分元素现在使用常规ParamConverter基础架构进行反序列化。在此发行版本中,反序列化使用MessageBodyReader。 -
FileUpload、Path、File、byte[]或InputStream类型的多部分元素是特殊的案例,通过 RESTEasy Reactive 扩展,而不是MessageBodyReader或ParamConverter类来反序列化。 -
其他明确设置的 MIME 类型的多部分元素仍然使用适当的
MessageBodyReader基础架构。 -
现在,多部分元素可以嵌套在
List中,以获取具有相同名称的部分的所有值。 -
任何包含
@RestForm或@FormParam参数的客户端调用默认为MediaType.APPLICATION_FORM_URLENCODED内容类型,除非它们是File,Path,Buffer,Multi<Byte> , 或byte[]类型,在这种情况下,默认为MediaType.MULTIPART_FORM_DATA内容类型。
-
类
org.jboss.resteasy.reactive.server.core.multipart.MultipartFormDataOutput已移到org.jboss.resteasy.reactive.server.multipart.MultipartFormDataOutput。 -
类
org.jboss.resteasy.reactive.server.core.multipart.PartItem已移到org.jboss.resteasy.reactive.server.multipart.PartItem。 -
类
org.jboss.resteasy.reactive.server.core.multipart.FormData.FormValue已移到org.jboss.resteasy.reactive.server.multipart.FormValue。 -
REST 客户端不再使用与 Jackson 关联的特定于服务器的
MessageBodyReader和MessageBodyWriter类。在此版本之前,REST 客户端会意外地使用这些类。结果是,使用quarkus-resteasy-reactive-jackson和quarkus-rest-client-reactive扩展的应用程序现在必须包含quarkus-rest-client-reactive-jackson扩展。
1.7.8.2. 增强的 JAXB 扩展控制 复制链接链接已复制到粘贴板!
JAXB 扩展检测使用 JAXB 注释的类,并将它们注册到默认的 JAXBContext 实例中。在此版本之前,类和 JAXB 之间的任何问题或冲突都会在运行时触发 JAXB 异常,并提供了有助于对问题进行故障排除的详细描述。但是,您可以在构建阶段预先处理这些冲突。
此发行版本添加了一个功能,可在构建时验证 JAXBContext 实例,以便您可以在开发周期早期检测和修复 JAXB 错误。
例如,如以下代码块中所示,将这两个类绑定到默认的 JAXBContext 实例会导致 JAXB 异常。这是因为类共享相同的名称 Model,尽管在不同的软件包中都存在。这个并发命名会创建一个冲突,从而导致异常。
package org.acme.one;
import jakarta.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Model {
private String name1;
public String getName1() {
return name1;
}
public void setName1(String name1) {
this.name1 = name1;
}
}
package org.acme.two;
import jakarta.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Model {
private String name2;
public String getName2() {
return name2;
}
public void setName2(String name2) {
this.name2 = name2;
}
}
要激活这个功能,请添加以下属性:
quarkus.jaxb.validate-jaxb-context=true
另外,这个版本添加了 quarkus.jaxb.exclude-classes 属性。使用此属性,您可以指定从绑定到 JAXBContext 的类。您可以提供完全限定类名称或软件包列表的逗号分隔列表。
例如,要解决上例中的冲突,您可以排除一个或多个类:
quarkus.jaxb.exclude-classes=org.acme.one.Model,org.acme.two.Model
或者,您可以排除软件包下的所有类:
quarkus.jaxb.exclude-classes=org.acme.*
1.8. 程序错误修复 复制链接链接已复制到粘贴板!
红帽构建的 Quarkus 3.2 增强了稳定性并解决关键错误,确保最佳性能和安全性。要获得红帽构建的 Quarkus 的最新修复,请确保使用最新的可用版本,即 3.2.12.SP1-redhat-00003。
1.8.1. 红帽构建的 Quarkus 3.2.12 SP1 中解决了安全修复 复制链接链接已复制到粘贴板!
-
CVE-2024-7254
com.google.protobuf/protobuf: StackOverflow vulnerability in Protocol Buffers -
CVE-2024-40094
com.graphql-java.graphql-java: Allocation of Resources Without Limits or Throttling in GraphQL Java -
CVE-2021-44549
org.eclipse.angus/angus-mail: 启用安全服务器身份检查 Safer SMTPS 通信 -
CVE-2024-47561
org.apache.avro/avro: 架构解析可能会触发远程代码执行(RCE)
1.8.2. 在红帽构建的 Quarkus 3.2.12 中解决安全修复 复制链接链接已复制到粘贴板!
-
CVE-2024-2700
io.quarkus/quarkus-core: 将本地配置属性调整到 Quarkus 应用程序 -
CVE-2024-29025
io.netty/netty-codec-http: 在没有限制或节流的情况下分配资源
1.8.3. 在红帽构建的 Quarkus 3.2.11 中解决安全修复 复制链接链接已复制到粘贴板!
-
CVE-2024-1597
org.postgresql/postgresql:pgjdbc: PostgreSQL JDBC Driver 漏洞允许使用 PreferQueryMode=SIMPLE 进行 SQL 注入 -
CVE-2024-1979
io.quarkus/quarkus-kubernetes-deployment: 通过注解获取信息泄漏 -
CVE-2024-1726
io.quarkus.resteasy.reactive/resteasy-reactive: Delayed 对 RESTEasy Reactive 中某些继承端点的安全检查可能会导致拒绝服务 -
CVE-2024-25710
org.apache.commons/commons-compress: Infinite loop 拒绝服务并损坏 DUMP 文件 -
CVE-2024-26308
org.apache.commons/commons-compress: OutOfMemoryError due dueing a malformed Pack200 文件 -
CVE-2024-1300
io.vertx:vertx-core: Memory leak in TCP servers with TLS 和 SNI -
CVE-2024-1023
io.vertx-core: Memory leak from Netty FastThreadLocal data structure in Vert.x
1.8.4. 在红帽构建的 Quarkus 3.2.10 中解决安全修复 复制链接链接已复制到粘贴板!
-
CVE-2023-22102
mysql/mysql-connector-java: Connector/J 未指定漏洞(2023 年 10 月 CPU) -
CVE-2023-48795
org.apache.sshd/sshd-core:ssh: Prefix truncation attack on Binary Packet Protocol (BPP) -
CVE-2023-4043
org.eclipse.parsson: 因为大量解析的服务
1.8.5. 在红帽构建的 Quarkus 3.2.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 : JSON 有效负载在 REST 资源与注解一起使用时被处理quarkus-resteasy
1.8.6. 在红帽构建的 Quarkus 3.2.9 中解决安全修复 复制链接链接已复制到粘贴板!
-
CVE-2023-43642:
snappy-java: Missing upper bound check on chunk length in snappy-java 可能会导致拒绝服务(DoS)的影响 -
CVE-2023-39410:
avro:apache-avro: Apache Avro Java SDK: Memory when deserialing not data in Avro Java SDK
1.8.7. 在红帽构建的 Quarkus 3.2.6 中解决安全修复 复制链接链接已复制到粘贴板!
-
CVE-2023-33202:
bcpkix:bc-java: Out of memory : 在org.bouncycastle.openssl.PEMParser类中解析 ASN.1 crafted 数据 -
CVE-2023-4853:
quarkus-http: quarkus: HTTP 安全策略绕过 -
CVE-2023-44487:
netty-codec-http2: HTTP/2: 多 HTTP/2 启用的 Web 服务器会受到 DDoS 攻击(Rapid Reset Attack)
1.8.8. 其他改进和程序错误修复 复制链接链接已复制到粘贴板!
- QUARKUS-4279 Manage Mime4j 库 core、dom 和 storage jars in the BOM
- QUARKUS-3964 修复追踪协议配置,仅允许 GRPC
- QUARKUS-3963 Handle REST 客户端中的 ParamConverter 的通用类型
- QUARKUS-3962 Never 在 REST 客户端中注册特定于服务器的供应商(固定)
- QUARKUS-3960 Register method of RESTeasy Reactive 参数容器用于反映
- 如果没有数据,QUARKUS-3959 在 SSE 事件中使用空字符串
- QUARKUS-3958 更新 Infinispan 客户端智能部分文档
- QUARKUS-3956 更新 keycloak-admin-client 扩展,以识别 quarkus.tls.trust-all 属性
- QUARKUS-3955 Always 运行 JPA 密码操作
- QUARKUS-3954 Reactive REST Client: 在跳过 @Provider auto-discovery 时检查 ClientRequestFilter
- QUARKUS-3950 修复 quarkus update 命令中的各种次要问题
- QUARKUS-3949 Fix Panache bytecode enhancement for @Embeddable 记录
- QUARKUS-3948 Save pathParamValues 编码并执行解码
- QUARKUS-3947 Fix != expression in @PreAuthorize check
- QUARKUS-3945 支持,使用逗号通过 CLI 添加扩展
- QUARKUS-3943 Fixes stork 路径参数解析在 REST 客户端中
- QUARKUS-3941 不扩展 Gradle Worker 的配置属性
- QUARKUS-3940 在缓存 Uni 时验证重复的上下文处理
- QUARKUS-3939 总是为带有 Vert.x gRPC 频道的非纯文本设置 ssl 和 alpn
- QUARKUS-3851 升级到 Hibernate ORM 6.2.18.Final
- QUARKUS-3841 Hibernate 问题 @OneToMany mappedBy 关联(HHH-16593)
- QUARKUS-3791 Jandex 索引会抛出带有最新 Oracle 驱动程序的 NPE
- QUARKUS-3779 [GSS](3.2.z) RESTEASY-3380 - RESTEasy 错误响应中公开的源引用
- QUARKUS-3757 从管理界面中取消过滤的 trace
- QUARKUS-3420 Duplicate 工件由额外的 io.quarkus in ER4 提供
- QUARKUS-3273 Duplicated 工件(在 Ghost 中)
- QUARKUS-3598 版本与红帽构建的 Apache Camel for Red Hat build of Quarkus 3.2.0 保持一致
- QUARKUS-3586 Automate 步骤创建 depstobuild.txt
- QUARKUS-3476 quarkus-bom-deps-to-build.txt 不提供 2.13.8.SP3.CR1 和 3.2.9.CR1
- QUARKUS-3761 Hibernate Reactive 不适用于 Red Hat build of Quarkus 3.2.9.CR1,但可用于上游版本
- QUARKUS-3759 Missing Sources for mvnpm/importmap in 3.2.9
- QUARKUS-3764 红帽构建的 Quarkus 3.2.9.CR1 包含 2 个红帽构建的 Quarkus BOMs,其中一个在 Maven repo zip 中缺少 555 个依赖项
- QUARKUS-3439 Red Hat build of Quarkus create app with gradle causing unresolved netty dependencies
- QUARKUS-1481 Platform 源 zip 仅包含 quarkus 源
- QUARKUS-3758 Duplicate Pom for io.github.crac:org-crac 和jboss Threads in 3.2.9
- QUARKUS-3377 在 3.2.z 中再次支持 quarkus-keycloak-authorization
- QUARKUS-3597 产品为红帽构建的 Quarkus JOSDK 扩展 6.3.3
- 在重复的工件数量没有直接依赖关系到平台 boms/supported 扩展的情况下,QUARKUS-3424 增加
- QUARKUS-3582 Red Hat build of Quarkus 3.2: move start-stop metrics and tech capabilities job to JDK17 in performance labs
- QUARKUS-3570 将 JUL URL 添加到日志指南更新
- QUARKUS-3571 Make hibernate reactive status clear in docs
- QUARKUS-3546 修复处理 RestEasy Reactive 中的 HTTP/2 H2 空帧
- QUARKUS-3564 从 docs yml 中删除更新指南
- Logging 指南中的 QUARKUS-3565 增强配置部分
- QUARKUS-3566 应用日志指南的 QE 反馈
- QUARKUS-3567 Doc 链接修复和增强 Bearer 令牌身份验证指南
- QUARKUS-3572 Fix doc link Asciidoc change link to xref where where
- QUARKUS-3573 Config doc - 如果不是 @ConfigMapping,则 Avoid 处理方法
- QUARKUS-3662 Tiny grammarweaks 用于授权 Web 端点指南
- QUARKUS-3563 修复标题为 upx.adoc
- QUARKUS-3569 从下游文档列表中删除"安全漏洞检测"主题
- QUARKUS-3568 Additional review and application of QE 反馈到 Datasource 指南
- 当 QUARKUS-3339 Vert.x SQL 客户端在 Oracle DB 中插入 null 或空字符串时挂起
- QUARKUS-3367 HTTP/1.1 升级到 H2C 无法处理大小大于初始窗口大小的完全请求实体
- QUARKUS-3669 Bump Keycloak 版本到 22.0.6
- QUARKUS-3670 Vert.x: fix NPE in ForwardedProxyHandler
- QUARKUS-3668 Fix dead link in infinispan-client-reference.adoc
- QUARKUS-3671 修复扩展时 GFS 更新回归
- QUARKUS-3672 taken @ConstrainedTo account for interceptors
- QUARKUS-3680 Let 自定义 OIDC 令牌传播过滤器自定义交换状态
- QUARKUS-3679 更新 Vert.x 版本到 4.4.6
- QUARKUS-3663 Tiny Vale tweaks for Datasource 和 Logging 指南
- QUARKUS-3664 Duplicate Authorization Bearer Header Fix
- QUARKUS-3666 Fixing Db2 Driver typo
- QUARKUS-3675 使 ZSTD Substitutions 更强大
- QUARKUS-3677 Fix deployer 检测(在 quarkus-maven-plugin 中)
- QUARKUS-3676 修复对 RestEasy Reactive 中的 HTTP/2 H2 空帧处理
- QUARKUS-3665 在 integration-tests/hibernate-orm-tenancy/datasource 中更可靠的测试设置
- 在没有 @TestSecurity 的情况下进行测试时,不应为每个调用进行 QUARKUS-3674 QuarkusSecurityTestExtension
- QUARKUS-3673 Dev UI: Fix he Client
- QUARKUS-3667 在 Hibernate ORM 5.6 兼容性测试中修复断言
- QUARKUS-3678 ArC:修复 decorators 的 PreDestroy 回调支持
- QUARKUS-3691 准备 ORM 更新
- QUARKUS-3689 Fix issue in Java migration in dev-mode
1.9. 已知问题 复制链接链接已复制到粘贴板!
查看以下已知问题,了解红帽构建的 Quarkus 3.2 限制和临时解决方案。
1.9.1. 由于版本 3.2.9.SP1 中的安全修复,使用 CDI 拦截器解析多租户 OIDC 配置会失败 复制链接链接已复制到粘贴板!
在红帽构建的 Quarkus 版本 3.2.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. podman 4.6 及更新的版本不适用于 SELinux 和 Testcontainers 库 复制链接链接已复制到粘贴板!
Ryuk 容器(对于 dev mode 中使用的 testcontainers 库)非常重要,在使用 Podman 4.6 或更高版本时无法启动。具体来说,这些问题清单在使用 SELinux 时,并防止 Ryuk 容器成功启动。
以下是具体问题和相应的临时解决方案:
与 Docker 守护进程套接字 的连接失败:默认情况下,
在尝试连接到 unix:///var/run/docker.sock 的 Docker 守护进程套接字时会出现 Permission denied错误。"-
临时解决方案:更新
containers.conf文件,使其包含label=false。
-
临时解决方案:更新
SELinux 和容器配置不匹配 :如果在操作系统上启用了
SELinux,但在containers.conf文件中禁用了 SELinux,则会出现InternalServerErrorException。-
临时解决方案:运行
sudo setenforce 0以禁用SELinux。
-
临时解决方案:运行
-
Unresolved Oracle Cloud Infrastructure (OCI) permissions error: an message appearsing,
OCI permissions denied.这个问题还没有临时解决方案。
根据这些问题,请考虑以下选项:
-
禁止使用
Ryuk容器,直到此已知问题解决为止。 - 使用与 Red Hat Enterprise Linux 8 及更新的版本兼容的 Podman 的早期版本,如 4.5.x。
如需更多信息,请参阅以下资源:
1.9.3. 由 Testcontainers 生成的容器偶尔会失败 复制链接链接已复制到粘贴板!
由 testcontainers 库为 dev 模式持续测试生成的容器偶尔会失败,并显示 Broken pipeline 错误。
临时解决方案:要解决这个问题,请重启 dev 模式。此问题不会影响生产环境模式。
1.9.4. 在特定流控制条件下,HTTP/1.1 升级到 H2C 会失败 复制链接链接已复制到粘贴板!
当将 HTTP/1.1 连接升级到 H2C 时,服务器不会考虑 H2 流控制器中的入站 HTTP 消息。当窗口大小达到零时,这会导致未处理的消息。
计划在以后的版本中对此问题的修复。
临时解决方案:目前还没有可用的临时解决方案。在解决这个问题前,如果消息有效负载大小超过流控制窗口大小,则从将 HTTP/1.1 连接升级到 H2C。
如需更多信息,请参阅以下资源:
1.9.5. 主动 Oracle 数据源因为特定的 Oracle JDBC 驱动程序版本失败 复制链接链接已复制到粘贴板!
被动 Oracle 数据源依赖于 Oracle 的 Java™ 数据库连接(JDBC)驱动程序Reactive 扩展。Oracle JDBC 驱动程序版本 23.2 和 21.11 中存在一个错误,导致应用程序失败在以下条件下接收任何响应:
-
您可以使用 Reactive 扩展来运行
UPDATE或INSERT查询,该查询会生成错误,如约束违反。 - 您可以启用 生成的密钥检索。
Oracle 可能不支持使用带有 Oracle 23 数据库的 Oracle JDBC 驱动程序 v21.10.0.0。
临时解决方案:
-
将
pom.xml文件中的 Oracle JDBC 驱动程序版本或等同的配置更改为com.oracle.database.jdbc:ojdbc11:21.10.0.0。 -
避免运行需要生成的密钥检索的查询。例如,在运行
INSERT查询前加载序列值。
如需更多信息,请参阅在 Oracle DB 中插入 null 或空字符串时 QUARKUS-3339 - Vertx SQL 客户端挂起。
1.9.6. 社区工件用于特定平台上的原生 Vert.x 依赖项 复制链接链接已复制到粘贴板!
在新支持的平台中使用 Vert.x 扩展的应用程序,如 aarch64 和 Windows on x86-64 上的 Linux,意外下载 com.aayushatharva.brotli4j 工件,而不是红帽提供的。此问题没有影响功能。
计划在以后的版本中对此问题的修复。
临时解决方案:目前还没有可用的临时解决方案。
如需更多信息,请参阅 QUARKUS-3314 - com.aayushatharva.brotli4j:native-linux-aarch64 和 native-windows-x86_64 不是 productized。
Kafka Streams 在 Windows 操作系统上加载 RocksDB,因为 librocksdbjni-win64.dll 原生库不在红帽构建的 Quarkus 中。
临时解决方案:在 Windows 上运行 Quarkus Kafka Streams 没有临时解决方案。在修复可用前,使用非 Windows 操作系统,或者确认在 Windows 上不支持此扩展。
Kafka Streams 是一个技术预览功能。
如需更多信息,请参阅 因为缺少 librocksdbjni-win64.dll,在 Windows 上不支持 QUARKUS-3434 - Ghost: Quarkus Kafka Streams
1.9.8. 社区工件用于特定平台上的一些原生依赖项 复制链接链接已复制到粘贴板!
Red Hat build of Quarkus 具有用于以下组件的 x86_64 架构的原生库。
-
io.netty.netty-transport-native-epoll -
io.netty.netty-transport-native-unix-common -
com.aayushatharva.brotli4j
但是,Red Hat build of Quarkus 在 ppc64le 和 s390x 构架中缺少这些组件的原生库。相反,它会下载工件的 Quarkus 社区版本,而不是红帽提供的工件版本。此问题没有影响功能。
临时解决方案:目前还没有可用的临时解决方案。
如需更多信息,请参阅以下资源:
1.9.9. 对 org.apache.maven:maven:pom:3.6.3 的依赖项可能会导致代理问题 复制链接链接已复制到粘贴板!
在使用某些 Quarkus 扩展时,可能会解决对 org.apache.maven:maven:pom:3.6.3 的依赖。这不适用于 Gradle 插件,但会影响到任何具有 io.smallrye:smallrye-parent:pom:37 的项目,在其父项目对象模型(POM)层次结构中。对于代理后面的环境,这个依赖关系可能会导致构建失败,以限制对版本 3.6.x 的 org.apache.maven 工件的访问。Maven 3.6.3 中的二进制软件包都作为 Quarkus 核心框架或支持的 Quarkus 扩展的依赖项下载。
临时解决方案:目前还没有可用的临时解决方案。
1.9.10. 在红帽扩展 registry 的 JBang 生成的初学者应用程序中构建失败 复制链接链接已复制到粘贴板!
构建 JBang 使用红帽扩展 registry 生成的初学程序应用程序可能会导致 postBuild () 运行时未指定的错误:
[jbang] [ERROR] Issue running postBuild()
dev.jbang.cli.ExitException: Issue running postBuild()
红帽构建的 Quarkus 不支持此 JBang 场景或开发工具。
临时解决方案:目前还没有可用的临时解决方案。
如需更多信息,请参阅 QUARKUS-3371 - 使用 jbang 创建的应用程序无法构建