Red Hat build of Quarkus 3.2 の リリースノート


Red Hat build of Quarkus 3.2

Red Hat Customer Content Services

概要

リリースノートでは、新機能、注目すべき技術的な変更、テクノロジープレビュー機能、バグ修正、既知の問題、および関連するアドバイザリーに関する情報を提供します。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、用語の置き換えは、今後の複数のリリースにわたって段階的に実施されます。詳細は、Red Hat CTO である Chris Wright のメッセージ をご覧ください。

第1章 Red Hat build of Quarkus 3.2 の リリースノート

リリースノートでは、Red Hat build of Quarkus 3.2 の新機能、注目すべき技術的な変更、テクノロジープレビュー機能、バグ修正、既知の問題、および関連するアドバイザリーに関する情報を提供します。

これには次のような注目すべき変更が含まれます。

以前のリリースからの移行に役立つように、アップグレードと下位互換性に関する情報も提供されます。

1.1. Red Hat build of Quarkus について

Red Hat build of Quarkus は、コンテナーおよび Red Hat OpenShift Container Platform 用に最適化された Kubernetes ネイティブ Java スタックです。Quarkus は、一般的な Java 標準のほか、Eclipse MicroProfile、Eclipse Vert.x、Apache Camel、Apache Kafka、Jakarta Persistence を備えた Hibernate ORM、RESTEasy Reactive (Jakarta REST) などのフレームワークやライブラリーと連携して動作するように設計されています。

開発者は、Java アプリケーションに必要な Java フレームワークを選択できます。これは、Java 仮想マシン (JVM) モードで実行することも、ネイティブモードでコンパイルして実行することもできます。Quarkus は、コンテナーファーストという手法で Java アプリケーションをビルドします。コンテナーファーストのアプローチにより、コンテナー化と、マイクロサービスと関数の効率的な実行が容易になります。このため、Quarkus アプリケーションのメモリーフットプリントは小さく、起動時間が短縮されます。

Quarkus はまた、統合設定、未設定のサービスの自動プロビジョニング、ライブコーディング、コード変更に関する即時フィードバックを提供する継続的テストなどの機能により、アプリケーション開発プロセスを最適化します。

1.2. Red Hat build of Quarkus コミュニティーバージョンと Red Hat build of Quarkus の違い

アプリケーション開発者は、Quarkus の 2 つの異なるバージョン (Quarkus コミュニティーバージョンと Red Hat build of Quarkus の製品バージョン) にアクセスできます。

次の表は、Quarkus コミュニティーバージョンと Red Hat build of Quarkus の違いを説明しています。

Expand
機能Quarkus コミュニティーバージョンRed Hat build of Quarkus バージョン説明

最新のコミュニティー機能へのアクセス

はい

いいえ

Quarkus コミュニティーバージョンを使用すると、最新の機能開発にアクセスできます。

Red Hat は、コミュニティーがリリースするすべてのバージョンに対応する Red Hat build of Quarkus をリリースするわけではありません。Red Hat build of Quarkus 機能リリースの頻度は、約 6 カ月ごとです。

Red Hat によるエンタープライズサポート

いいえ

はい

Red Hat は、Red Hat build of Quarkus に対してのみエンタープライズサポートを提供します。Quarkus コミュニティーバージョンに関する問題を報告するには、quarkusio/quarkus - Issues を参照してください。

長期サポートへのアクセス

いいえ

はい

Red Hat build of Quarkus の各機能リリースは、次の機能リリースまでの約 1 年間完全にサポートされます。機能リリースが新しいバージョンに置き換えられた場合、Red Hat はさらに 6 カ月間のメンテナンスサポートを提供し続けます。詳細は、サポートと互換性 を参照してください。

以前のリリースにバックポートされた Common Vulnerabilities and Exposures (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 は、サブスクリプション契約に従って、サポートされる構成とテスト済みのインテグレーションについて、実稼働と開発の両方のサポートを提供します。詳細は、Red Hat build of Quarkus でサポートされる構成 を参照してください。

安全なビルドシステムを使用したソースからのビルド

いいえ

はい

Red Hat build of Quarkus では、コアプラットフォームとサポートされているすべてのエクステンションは、安全なソフトウェア配信を使用して Red Hat によって提供されます。つまり、それらはソースから構築され、セキュリティー上の問題がスキャンされ、ライセンスの使用が検証されています。

JDK および Red Hat Build of Quarkus ネイティブビルダーディストリビューションのサポートへのアクセス

いいえ

はい

Red Hat build of Quarkus は、認定された OpenJDK ビルドと認定されたネイティブ実行可能ビルダーをサポートします。以下の警告を参照してください。詳細は、サポートされる構成 を参照してください。

重要

Red Hat build of Quarkus は、Mandrel に基づいており Red Hat によって配布されている Red Hat Build of Quarkus ネイティブビルダー イメージを使用して、ネイティブ Linux 実行可能ファイルのビルドをサポートします。

詳細は、Quarkus アプリケーションをネイティブ実行可能ファイルにコンパイルする を参照してください。Oracle GraalVM Community Edition (CE)、Mandrel Community Edition、またはその他の GraalVM ディストリビューションを使用したネイティブ実行可能ファイルのビルドは、Red Hat build of Quarkus ではサポートされていません。

1.3. 新機能、機能拡張、および技術的な変更

このセクションでは、Red Hat build of Quarkus 3.2 に導入された新機能、機能拡張、および技術的な変更について概説します。

1.3.1. クラウド

1.3.1.1. Qute テンプレーティングエンジンに導入されたキャッシュされたセクション機能

Red Hat build of Quarkus 3.2 では、Qute テンプレーティングエンジンが強化され、めったに変更されないテンプレートの部分をキャッシュできる機能が提供され、効率の向上に役立ちます。

セクション単位でのキャッシュ機能を使用するには、quarkus-cache エクステンションを使用します。これにより、CacheSectionHelper が自動的に登録および設定されます。

詳細は、QUTE REFERENCE GUIDE の Cached Section を参照してください。

1.3.1.2. Kubernetes Client のバージョン 6.7.2 へのアップグレード

Red Hat build of Quarkus に含まれる Kubernetes Client は、バージョン 5.12 から 6.7.2 にアップグレードされました。このアップグレードでは、機能が強化され、クラウドネイティブアプリケーション開発のサポートが改善されます。詳細は、Kubernetes client - Migration from 5.x to 6.x ガイドを参照してください。

1.3.2. Core

1.3.2.1. ビルド時の分析 (ユーザーテレメトリー) のサポート

Red Hat build of Quarkus 3.2 には、ビルド時分析機能が導入されています。この機能は、アプリケーションの実行時ではなく、アプリケーションのビルド時に、Red Hat build of Quarkus の使用状況に関する情報を提供します。

使用状況分析レポートは、使用されているオペレーティングシステム、JAVA バージョン、ビルドシステム、エクステンションなどの匿名情報を提供します。使用状況分析は、Red Hat build of Quarkus がどのように使用され、どのように改善できるかをより詳細に Red Hat が理解する上で役立ちます。

オプトインするには、Red Hat build of Quarkus を開発モードで実行します。初回の実行時に、匿名のビルド時データを Quarkus コミュニティーに提供することにオプトインするかどうかを尋ねられます。このデータは、実稼働環境などで Red Hat build of Quarkus アプリケーションを実行する場合には収集されません。

詳細は、Quarkus コミュニティーの Quarkus Usage Analytics ガイドを参照してください。収集されるデータの詳細は、Telemetry Data Collection Notice を参照してください。

1.3.2.2. Infinispan アノテーションキャッシュのサポート

Red Hat build of Quarkus Infinispan エクステンションでは、宣言型キャッシュ API がサポートされるようになり、CDI 管理の Bean でアノテーションベースのキャッシュ制御が可能になります。

1.3.2.3. 管理ネットワークインターフェイスインテグレーション

管理ネットワークインターフェイスは、ヘルスチェックやメトリクスなどのさまざまな管理タスクにエンドポイントを提供するなど、アプリケーションを管理および監視するための専用チャネルです。

1.3.2.4. quarkus-cache 設定のほとんどがランタイムになる

quarkus-cache エクステンション設定のほとんどはランタイムになっており、アプリケーションの起動時にキャッシュ設定を定義できるようになりました。特定の設定プロパティーは、API 呼び出しを通じて実行時に変更できます。

1.3.2.5. 複数の SMTP メーラーのサポート

一部のアプリケーションでは、メールを別の SMTP サーバー経由で送信する必要があります。Red Hat build of Quarkus 3.2 では、複数のメーラーを設定し、複数の SMTP サーバーを使用してメールを送信できるようになりました。

詳細は、MAILER REFERENCE GUIDE の Multiple mailer configurations セクションを参照してください。

1.3.2.6. 開発 UI の刷新

Red Hat build of Quarkus 3.2 では、開発中のアプリケーションコンポーネントの管理とモニタリングを合理化するためのグラフィカルインターフェイスなど、開発 UI に大幅な変更と機能拡張が導入されています。これは、効率的なログナビゲーション、メトリクス追跡、エンドポイント管理に役立ちます。

1.3.2.7. スケジューラーのプログラム API

Red Hat build of Quarkus 3.2 リリースでは、新しいスケジューラープログラム API を使用して、プログラムでジョブをスケジュールできます。

プログラムでジョブをスケジュールするには、io.quarkus.scheduler.Scheduler を注入します。プログラム的にスケジュールされたジョブを削除することもできます。

詳細は、Quarkus の SCHEDULER REFERENCE GUIDE の Programmatic scheduling セクションを参照してください。

1.3.2.8. 更新ツールインテグレーション

Red Hat build of Quarkus 更新ツールは、最新の Red Hat build of Quarkus バージョンに一致するようにプロジェクトの依存関係、設定、およびコードを自動的に更新することで、アプリケーションのアップグレードを簡素化します。移行プロセスを合理化し、互換性を確保して、最新の状態を維持するために必要な労力を軽減します。

このツールを使用するには、対話型プロンプトに従ってプロジェクトディレクトリーで quarkus update コマンドを実行し、アプリケーションを更新します。

重要

Quarkus CLI は開発モードのみを対象としています。Red Hat は、実稼働環境での Quarkus CLI の使用をサポートしていません。

詳細は、Red Hat build of Quarkus バージョン 3.2 へのアプリケーションの移行 ガイドを参照してください。

1.3.3. Data

1.3.3.1. Hibernate ORM エクステンションに自動 IN 句パラメーターパディングが組み込まれる

この 3.2 リリースでは、Hibernate Object-Relational Mapping (ORM) エクステンションが変更され、デフォルト設定として自動 IN 句パラメーターパディングが組み込まれました。この改善により、IN 句を組み込んだクエリーのキャッシュ効率が向上します。

quarkus.hibernate-orm.query.in-clause-parameter-padding のプロパティー値を false に設定すると、以前の機能に戻してこの機能を非アクティブにできます。

1.3.3.2. Hibernate ORM のバージョン 6.2 へのアップグレード

Red Hat build of Quarkus には Hibernate ORM バージョン 6.2 が含まれ、サポートされるようになったため、メインの永続層が大幅にアップグレードされました。

Hibernate ORM 6.2 は、バージョン 5.6 と比較して多くの改良および新機能を提供しますが、いくつかの破壊的変更もあります。

詳細は、以下を参照してください。

1.3.3.3. Hibernate Search のバージョン 6.2 へのアップグレード

Red Hat build of Quarkus 3.2 では、Hibernate Search がバージョン 6.2 にアップグレードされました。

Hibernate Search は、Red Hat build of Quarkus アプリケーションにインデックス作成機能と全文検索機能を提供します。バージョン 6.2 では、機能拡張、新機能のほか、Red Hat build of 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. リアクティブデータソースによる CredentialsProvider 値のサポート

リアクティブデータソースで CredentialsProvider 値を変更できるようになり、セキュリティーと設定可能性が強化されました。これにより、認証用の認証情報をリアルタイムで更新できるため、アプリケーションの可用性を維持し、運用の中断を最小限に抑えながら、データアクセスのセキュリティーが確保されます。

1.3.4. ネイティブ

1.3.4.1. Red Hat Build of Quarkus ネイティブビルダーのバージョン 23 へのアップグレード

バージョン 23 では、パフォーマンスの向上に加えて、デバッグ情報の生成の改善、Java Flight Recorder (JFR) イベントのサポートの拡張、および JFR イベントストリームの実験的なサポートが行われています。また、Java Management Extensions (JMX) の実験的なサポートも導入されています。

環境変数は、新しいネイティブイメージオプション -E<env-var-key>[=<env-var-value>] を通じて、Mandrel に渡す必要があります。

Red Hat Build of Quarkus ネイティブビルダーは、デフォルトで x86-64-v3 (AMD64 アーキテクチャー上のプロセッサー固有のアプリケーションバイナリーインターフェイス (psABI)) をターゲットにするようになり、古いアーキテクチャーがより互換性のあるネイティブイメージにコンパイルするための新しい -march オプションへのサポートを導入しました。

詳細は、Red Hat build of Quarkus コミュニティーの "NATIVE REFERENCE GUIDE" の記事 Work around missing CPU features を参照してください。

1.3.5. 可観測性

1.3.5.1. OpenTelemetry SDK 自動設定

Red Hat build of Quarkus では、OpenTelemetry SDK 自動設定が導入され、分散トレースと可観測性のインテグレーションが簡素化されます。Red Hat build of Quarkus エクステンションに基づいて OpenTelemetry SDK セットアップを自動化し、手動設定を排除して、トレースとメトリクスの収集を最適化します。

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) フロントチャネルログアウトのサポート

Red Hat build of Quarkus に OIDC フロントチャネルログアウト サポートが組み込まれたことで、すでにサポートされている OIDC バックチャネルログアウト が補完され、分散環境で複数のサービスにわたってユーザーのログアウトが可能になります。

1.3.6.3. OpenID Connect トークン検証のカスタマイズ

Red Hat build of Quarkus 3.2 では、OIDC トークン検証プロセスを調整するオプションを利用できます。このカスタマイズにより、署名検証の前に、Microsoft Azure などの OIDC プロバイダーによって通常発行されるレガシートークンヘッダーの前処理が可能になります。

1.3.6.4. セキュリティーアノテーションはメタアノテーションとして使用可能

メタアノテーションで @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 {
    }
Copy to Clipboard Toggle word wrap

この組み合わせは、複数のテスト方法でセキュリティー設定の同じセットが必要な場合に便利です。

1.3.6.5. 静的テナントの簡素化された OIDC マルチテナント解決

application.properties ファイルで複数のテナントを設定する OIDC マルチテナントセットアップでは、TenantResolver インターフェイス実装を登録してテナント識別子を解決する方法を指定する必要があります。

Red Hat build of Quarkus 3.2 では、規則ベースの静的テナント解決が導入され、現在の HTTP リクエスト URL の最後のパスセグメントが、テナント識別子として使用されます。たとえば、リクエスト URL が /keycloak で終わる場合、テナント ID が keycloak である静的テナント設定が選択されます。

このオプションを使用すると、単純なマルチテナント設定のボイラープレートコードを削減できます。

詳細は、Quarkus の USING OPENID CONNECT (OIDC) MULTI-TENANCY ガイドの Configuring the application セクションを参照してください。

1.3.6.6. @RolesAllowed での SmallRye 設定プロパティーの拡張

Red Hat build of 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 のサポート

Red Hat build of Quarkus 3.2 には Maven バージョン 3.9 のサポートが追加され、開発者は最新の Maven 機能を使用できます。Maven バージョン 3.8.6 以降は引き続きサポートされます。

1.3.8.2. デプロイツールインテグレーション

Quarkus の quarkus deploy コマンドを使用すると、さまざまなクラウドプラットフォーム、コンテナー、サーバーレス環境へのアプリケーションのデプロイが容易になります。最適化されたコンテナーイメージを生成し、アプリケーションをターゲットプラットフォームに適応させて、効率的かつ信頼性の高いデプロイメントを実現します。

このツールを使用するには、quarkus deploy を実行してから、必要なデプロイメントターゲットと設定オプションを実行することで、手動設定を必要とせずにシームレスなアプリケーションのデプロイメントが可能になります。

1.3.8.3. コンテナーイメージのビルドとプッシュ向けの Red Hat build of Quarkus CLI 機能拡張

Red Hat build of Quarkus 3.2 では、コンテナーイメージのビルドとプッシュが簡単になりました。詳細は、BUILDING QUARKUS APPS WITH QUARKUS COMMAND LINE INTERFACE ガイドの Container images セクションを参照してください。

1.3.8.3.1. コンテナーイメージのビルド

たとえば、Docker イメージをビルドしてコンテナーイメージのエクステンションを追加または削除するために pom.xml プロジェクト設定を調整する必要がなくなりました。代わりに、次のコマンドを実行するだけで済みます。

quarkus image build docker
Copy to Clipboard Toggle word wrap
1.3.8.3.2. コンテナーイメージのプッシュ

image push コマンドは、image build コマンドに似ており、イメージをターゲットコンテナーレジストリーにプッシュするためのいくつかの基本オプションを提供します。

quarkus image push --registry=<image registry> --registry-username=<registry username> --registry-password-stdin
Copy to Clipboard Toggle word wrap
重要

Quarkus CLI は開発モードのみを対象としています。Red Hat は、実稼働環境での Quarkus CLI の使用をサポートしていません。

Red Hat build of Quarkus CLI イメージコマンドの詳細なリストとその使用方法については、次のリソースを参照してください。

1.3.9. Web

1.3.9.1. SmallRye GraphQL のフェデレーションサポート

Quarkus の SmallRye GraphQL は、Apollo Federation 2 subgraph 公開をサポートするようになり、フェデレーテッド GraphQL スキーマの作成が可能となりました。これにより、個別にデプロイされた GraphQL サービスからデータを集約することで統合された GraphQL API が強化され、複雑なアプリケーション開発が簡素化されます。

Panache エクステンションを備えた Red Hat build of Quarkus の REST データでの名前付きクエリーによるフィルタリングは、事前定義されたクエリーを 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;
}
Copy to Clipboard Toggle word wrap

次に、生成されたリソースを使用してエンティティーをリストする際に、クエリーパラメーター namedQuery を設定できます。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 通信を使用してマイクロサービスを開発する効率的な方法が提供されます。

この実装により、Red Hat build of Quarkus Security 設定から重複性を削除する単一の HTTP サーバー設定が可能になります。

1.3.9.5. リアクティブ REST クライアントを作成するためのプログラム API

以前のリリースでは、application.properties ファイルで設定することによってのみ、リアクティブ REST クライアントを作成できました。動的クライアントを作成する場合、このアプローチは問題となる可能性がありました。

Red Hat build of 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 レスポンスヘッダーとステータスコードはカスタマイズ可能

Red Hat build of Quarkus 3.2 では、RESTEasy Reactive クライアントが強化され、レスポンスをストリーミングする際の柔軟性が向上しました。

この更新により、HTTP ヘッダー、HTTP レスポンス、ステータスコードをカスタマイズできるようになりました。

詳細は、Quarkus の WRITING REST SERVICES WITH RESTEASY REACTIVE ガイドの Customizing headers and status セクションを参照してください。

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 と互換性のあるサポートされる構成およびアーティファクト、ライフサイクルおよびサポートポリシーの概要に関する詳細情報は、次の Red Hat カスタマーサポートポータルで参照できます。

1.4.1. 製品の更新とサポートライフサイクルポリシー

Red Hat build of Quarkus では、機能リリースは、新しい機能やサポートを導入するメジャーリリースまたはマイナーリリースのいずれかになります。Red Hat build of Quarkus リリースのバージョン番号は、Quarkus コミュニティープロジェクト の長期サポート (LTS) バージョンと直接一致しています。Red Hat build of Quarkus 機能リリースのバージョン番号は、ベースとなる Quarkus コミュニティーのバージョンと一致します。詳細は、ブログ記事 Long-Term Support (LTS) for Quarkus を参照してください。

重要

Red Hat は、コミュニティーがリリースするすべてのバージョンに対して、Quarkus の製品版をリリースするわけではありません。Red Hat build of Quarkus 機能リリースの頻度は、約 6 カ月ごとです。

Red Hat build of Quarkus は、後続のバージョンのリリースまで、機能リリースの完全なサポートを提供します。機能リリースが新しいバージョンに置き換えられた場合、Red Hat は、以下のサポートライフサイクルチャート [図 1] に示すように、そのリリースに対してさらに 6 カ月間のメンテナンスサポートを提供し続けます。

図 1 Red Hat build of Quarkus の機能リリースの頻度とサポートライフサイクル

リリースのフルサポートフェーズとメンテナンスサポートフェーズの期間中、Red Hat はバグや Common Vulnerabilities and Exposures (CVE) を修正するための 'service-pack (SP)' 更新と 'マイクロ' リリースも提供します。

Red Hat build of Quarkus の後続の機能リリースの新機能により、基盤となるテクノロジーまたはプラットフォームの依存関係に機能拡張、革新、および変更が導入される可能性があります。後続の機能リリースの新機能または変更点の詳細な概要については、新機能、機能拡張、および技術的な変更 を参照してください。

Red Hat build of Quarkus のほとんどの機能は、最新リリースにアップグレードした後も期待どおりに動作し続けますが、特定のシナリオでは、既存のアプリケーションを変更したり、環境や依存関係に追加の設定を実行したりすることが必要になる場合があります。したがって、Red Hat build of Quarkus を最新リリースにアップグレードする前に、必ずリリースノートの以前のバージョンとの互換性に影響を与える変更 および 非推奨のコンポーネントおよび機能 のセクションを確認してください。

1.4.2. テスト済みおよび検証済みの環境

Red Hat build of Quarkus 3.8 は、Red Hat OpenShift Container Platform のバージョン 4.15、4.12 および Red Hat Enterprise Linux 8.9 で利用できます。

サポートされる構成のリストについては、Red Hat カスタマーポータルにログインし、ナレッジベースのソリューション記事 Red Hat build of Quarkus でサポートされる構成 を参照してください。

1.4.3. 開発サポート

Red Hat は、以下の Red Hat build of Quarkus の機能、プラグイン、エクステンション、および依存関係の 開発サポート を提供します。

機能

  • 継続的テスト
  • Dev Services
  • Dev UI
  • ローカル開発モード
  • リモート開発モード

プラグイン

  • Maven Protocol Buffers プラグイン
1.4.3.1. 開発ツール

Red Hat は、Quarkus CLI、Maven および Gradle プラグインなどの Quarkus 開発ツールを使用して、Red Hat build of Quarkus アプリケーションのプロトタイプを作成、開発、テスト、デプロイするための 開発サポート を提供します。

Red Hat は、実稼働環境での Quarkus 開発ツールの使用をサポートしていません。詳細は、Red Hat ナレッジベースの記事 Development Support Scope of Coverage を参照してください。

1.5. 非推奨のコンポーネントおよび機能

このセクションに記載するコンポーネントおよび機能は、Red Hat build of Quarkus 3.2 で非推奨となりました。これらはこのリリースに含まれており、サポートされています。ただし、これらのコンポーネントと機能は拡張されず、今後削除される可能性があります。

このリリースで非推奨となったコンポーネントと機能のリストについては、Red Hat カスタマーポータルにログインし、Red Hat Runtimes: コンポーネントの詳細の概要 ページを参照してください。

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. テクノロジープレビュー

このセクションでは、Red Hat build of Quarkus 3.2 でテクノロジープレビューとして利用できるようになった機能とエクステンションを記載しています。

重要

テクノロジープレビュー機能は、Red Hat 製品サポートのサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではない可能性があるため、Red Hat では実稼働環境での使用を推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。

Red Hat テクノロジープレビュー機能の詳細は、テクノロジプレビュー機能のサポート範囲 を参照してください。

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 へのアップグレード

この 3.2 リリースでは、Red Hat build of Quarkus は Hibernate Reactive 1 ではなく Hibernate Reactive 2 エクステンションに依存します。この変更は、以前のバージョンと互換性のない動作およびデータベーススキーマの期待項目におけるいくつかの変更を意味します。変更のほとんどは、Hibernate ORM 5.6 ではなく Hibernate ORM 6.2 に依存する Hibernate Reactive 2 に関連しています。

1.6.3. quarkus-opentelemetry-exporter-otlp の quarkus-opentelemetry への統合

quarkus-opentelemetry-exporter-otlp エクステンションは、quarkus-opentelemetry エクステンションの一部です。この統合されたエクステンションは、追加のセットアップなしで OpenTelemetry Protocol (OTLP) エクスポーター機能を提供し、OTLP エクスポーターの使用を効率化します。

1.6.4. データベースのトランザクションログ保存へのサポート

Red Hat build of Quarkus 3.2 では、アプリケーションコンテナーが永続ボリュームを使用できない場合など、永続ストレージが利用できないクラウド環境の場合、Java Database Connectivity (JDBC) データソースを使用して、トランザクションログをデータベースに保存するようにトランザクション管理を設定できます。

重要

この設定は、Jakarta Transactions トランザクションにのみ関連します。

データベースを使用してトランザクションログを保存することにはいくつかの利点がありますが、ファイルシステムを使用してログを保存する場合と比較してパフォーマンスが低下することに気づく場合があります。

ただし、クラウドネイティブアプリケーションでは、トランザクションを慎重に評価した上で評価することが重要です。これらのトランザクションを管理する narayana-jta エクステンションが正しく動作するには、安定したストレージ、再利用可能な一意のノード ID、および安定した IP アドレスが必要です。JDBC オブジェクトストアは安定したストレージを提供しますが、ユーザーは他の 2 つの要件を満たす方法を計画する必要があります。

JDBC データソースを使用してトランザクションログを保存するには、quarkus.transacion-manager.object-store.<property> プロパティーを設定します。ここで、<property> は次のオプションのいずれかになります。

  • type (string): このプロパティーを jdbc に設定すると、トランザクションログの保存用に Red Hat build of Quarkus JDBC データソースを使用できるようになります。デフォルト値は file-system です。
  • datasource (string): トランザクションログストレージのデータソースの名前を指定します。datasource プロパティーに値が指定されていない場合、Red Hat build of Quarkus はデフォルトのデータソースを使用します。
  • create-table (boolean): true に設定すると、トランザクションログテーブルがまだ存在しない場合は自動的に作成されます。デフォルト値は false です。
  • drop-table (boolean): true に設定すると、テーブルがすでに存在する場合、起動時にテーブルが削除されます。デフォルト値は false です。
  • table-prefix (文字列): 関連するテーブル名の接頭辞を指定します。デフォルト値は quarkus_ です。

以下の点も考慮してください。

  • create-table プロパティーを true に設定することで、初期セットアップ中にトランザクションログテーブルを手動で作成できます。
  • JDBC データソースと ActiveMQ Artemis を使用すると、XAResourceRecovery インスタンスのエンリストと自動登録が可能になります。

    ただし、データベースにトランザクションログを保存するための Red Hat build of Quarkus のサポートには、次の点が含まれていないことに注意してください。

    • JDBC データソースは quarkus-agroal エクステンションの一部であり、アプリケーションプロパティーが quarkus.datasource.jdbc.transactions=XA に設定されている必要があります。
    • ActiveMQ Artemis (コミュニティークライアント) は、quarkus-pooled-jms エクステンションの一部であり、アプリケーションプロパティーが quarkus.pooled-jms.transaction=XA に設定されている必要があります。

      詳細は、CEQ-4878 を参照してください。

  • アプリケーションのクラッシュや障害が発生した場合にデータを確実に保護するには、quarkus.transaction-manager.enable-recovery=true 設定でトランザクションクラッシュリカバリーを有効にします。
注記

Agroal がトランザクションチェックの実行に関して異なるビューを表示する という現在の既知の問題を回避するには、トランザクションログを書き込むデータソースのデータソーストランザクション型を disabled に設定します。

quarkus.datasource.<TX_LOG>.jdbc.transactions=disabled
Copy to Clipboard Toggle word wrap

この例では、データソース名として TX_LOG を使用します。

1.7. 以前のバージョンとの互換性に影響を与える変更

このセクションでは、以前の製品バージョンでビルドされたアプリケーションの互換性に影響を与える、Red Hat build of Quarkus 3.2 の変更点について説明します。

これらの破壊的変更を確認し、アプリケーションを Red Hat build of Quarkus 3.2 に更新した後も、アプリケーションが確実に機能し続けるために必要な手順を実行してください。

これらの変更の多くを自動化するには、quarkus update コマンドを使用して、プロジェクトを Red Hat build of Quarkus の最新バージョンに更新します

1.7.1. クラウド

1.7.1.1. Red Hat build of Quarkus に含まれる Kubernetes Client へのアップグレード

Kubernetes Client が 5.12 から 6.7.2 にアップグレードされました。詳細は、Kubernetes Client - Migration from 5.x to 6.x ガイドを参照してください。

1.7.1.2. TLS ベースのコンテナーポートを生成するためのロジックの改善

Red Hat build of Quarkus 3.2 では、Kubernetes エクステンションが TLS ベースのコンテナーポートを生成する方法に変更が導入されています。

以前のバージョンでは、生成されたデプロイメントリソースに https という名前のコンテナーポートが自動的に追加されました。このアプローチでは、特に SSL/TLS が設定されていない場合に問題が発生し、ポートが機能しなくなりました。

3.2 以降では、Kubernetes エクステンションはデフォルトで https という名前のコンテナーポートを追加しません。コンテナーポートは、次の手順を実行した場合にのみ追加されます。

  • 関連する quarkus.http.ssl.* プロパティーを application.properties ファイルで指定する場合。
  • quarkus.kubernetes.ports.https.tls=trueapplication.properties ファイルで指定する場合。
1.7.1.3. 一部の Kubernetes および OpenShift プロパティーの削除

この 3.2 リリースでは、以前に非推奨となった Kubernetes および OpenShift 関連のプロパティーの一部が削除されました。削除されたプロパティーは、新しいプロパティーに置き換えてださい。

Expand
表1.1 削除されたプロパティーと新しいプロパティー
削除されたプロパティー新規プロパティー

quarkus.kubernetes.expose

quarkus.kubernetes.ingress.expose

quarkus.openshift.expose

quarkus.openshift.route.expose

quarkus.kubernetes.host

quarkus.kubernetes.ingress.host

quarkus.openshift.host

quarkus.openshift.route.host

quarkus.kubernetes.group

quarkus.kubernetes.part-of

quarkus.openshift.group

quarkus.openshift.part-of

さらに、このリリースでは、quarkus. の接頭辞がないプロパティーは無視されます。たとえば、このリリースより前は、kubernetes.name プロパティーを追加した場合、それは quarkus.kubernetes.name にマップされました。2.16.0.Final から 2.16.1.Final #30850 にアップグレードする際の java.lang.ClassCastException のような例外を回避するために、この種のマッピングは行われなくなりました。

Quarkus のコンテキストで Kubernetes と OpenShift の作業を続ける場合は、新しいプロパティーを使用し、必要に応じて quarkus. の接頭辞を付けます。

1.7.2. Core

1.7.2.1. Jandex 3 へのアップグレード

この 3.2 リリースでは、Jandex は SmallRye プロジェクトの一部となり、すべての Jandex プロジェクトが 1 つのリポジトリー (https://github.com/smallrye/jandex/) に統合されます。その結果、Jandex Maven プラグインの新しいリリースが Jandex コアとともに提供されます。

このリリースでは、Maven コーディネートも変更されます。古いコーディネートを新しいコーディネートに置き換えます。

Expand
表1.2 古いコーディネートと新しいコーディネート

古いコーディネート

新しいコーディネート

org.jboss:jandex

io.smallrye:jandex

org.jboss.jandex:jandex-maven-plugin

io.smallrye:jandex-maven-plugin

Maven Enforcer プラグインを使用する場合は、org.jboss:jandex への依存関係を禁止するように設定します。Gradle ユーザーは、同等のプラグインを利用できます。

1.7.2.2. Jandex API ユーザーの移行パス

Jandex 3 には、多くの興味深い機能と改善が含まれています。残念ながら、これらの変更には、いくつかの破壊的変更が必要でした。推奨される移行パスは次のとおりです。

  1. Jandex 2.4.3.Final にアップグレードします。このバージョンでは、Jandex 3.0.0 で変更されたいくつかのメソッドの代替が提供されます。たとえば、ClassInfo.annotations() の代わりに annotationsMap() を使用し、MethodInfo.parameters()parameterTypes() に置き換えます。Jandex が非推奨としてマークしたメソッドの使用を停止してください。
  2. Indexer.index() または indexClass() の戻り値を使用しないようにしてください。
  3. Jandex 2.4.3.Final に対してコードをコンパイルすると、2.4.3.Final と 3.0.0 の両方に対して実行できます。ただし、これには例外があります。IndexView インターフェイスを実装するか、場合によっては UnresolvedTypeVariable クラスに依存する場合は、プロジェクトを Jandex 2.4.3 と Jandex 3 の両方と互換性を保つことができません。
  4. Jandex 3.0.0 にアップグレードします。IndexView インターフェイスを実装する場合は、追加されたメソッドを必ず実装してください。また、Jandex Type 階層を広範囲に使用する場合は、再帰型変数を表すために現在使用されている TypeVariableReference を処理する必要があるか確認してください。

このリリースと並行して、Jandex は 新しいドキュメントサイト を導入します。現在進行中の作業ですが、今後より包括的なものになる予定です。詳細は、改良された Jandex Javadoc を参照してください。

1.7.2.3. io.quarkus.arc.config.ConfigProperties アノテーションの削除

この 3.2 リリースでは、以前に非推奨になった io.quarkus.arc.config.ConfigProperties アノテーションが削除されました。

代わりに、io.smallrye.config.ConfigMapping アノテーションを使用して、複数の関連する設定プロパティーを注入します。

詳細は、MAPPING CONFIGURATION TO OBJECTS ガイドの @ConfigMapping セクションを参照してください。

この 3.2 リリースでは、プライベートメソッドでのインターセプターバインディングアノテーションの宣言はサポートされておらず、ビルドの失敗をトリガーします。以下に例を示します。

jakarta.enterprise.inject.spi.DeploymentException: @Transactional does not affect method com.acme.MyBean.myMethod() because the method is private. [...]
Copy to Clipboard Toggle word wrap

以前のリリースでは、プライベートメソッドでインターセプターバインディングアノテーションを宣言すると、ログに警告が表示されるだけで、それ以外は無視されていました。

このサポート変更は、プライベートメソッドでのインターセプターアノテーションの意図しない使用を防ぐことを目的としています。インターセプターアノテーションによる効果がなく、混乱を引き起こす可能性があるためです。

この変更に対処するには、プライベートメソッドからそのようなアノテーションを削除します。これらのアノテーションの削除が不可能な場合は、設定プロパティー quarkus.arc.fail-on-intercepted-private-methodfalse に設定できます。この設定により、システムは以前の動作に戻り、警告のみが記録されます。

1.7.2.5. @AlternativePriority アノテーションの削除

このリリースでは、以前に非推奨になった @AlternativePriority アノテーションが削除されました。これを @Alternative および @Priority の両方のアノテーションに置き換えます。

例: 削除されたアノテーション

@AlternativePriority(1)
Copy to Clipboard Toggle word wrap

例: 置き換えられたアノテーション

@Alternative
@Priority(1)
Copy to Clipboard Toggle word wrap

非推奨となり、今後のリリースで削除される予定の io.quarkus.arc.Priority に代わり、@Priority アノテーションを付けた jakarta.annotation.Priority を使用します。どちらのアノテーションも同じように機能します。

1.7.2.6. テストの変更: Mockito サブクラス mockmaker の修正

このリリースでは、Mockito バージョン 5.x が更新されます。特に、Mockito は 5.0.0 リリース で、デフォルトの mockmaker を inline に切り替えました。

ただし、Quarkus 1.x 以降、Quarkus ユーザーが慣れ親しんだモック動作を維持し、広範なテストスイートのメモリーリーク を防ぐために、Quarkus 3.0 では、inline がフルサポートされるまで、これに代わって mockmaker を subclass に修正します。

inline mockmaker を強制する場合は、次の手順に従います。

  1. 次の除外を 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>
    Copy to Clipboard Toggle word wrap
  2. 依存関係に mockito-core を追加します。
  3. Mockito 5.3 では、mockito-inline アーティファクトが削除されました。これは依存関係から削除できます。
1.7.2.7. サポートされる Maven の最小バージョンの更新

Quarkus は、Maven 3.9 をサポートするために Maven プラグインのリファクタリングを実施しました。その結果、Quarkus がサポートする Maven の最小バージョンは 3.6.2 から 3.8.6 以降に引き上げられました。最新の改善点や機能を活用できるように、開発環境がこれに応じて更新されることを確認してください。

1.7.2.8. quarkus-bootstrap-maven-plugin の削除

この 3.2 リリースでは、以前に非推奨となった io.quarkus:quarkus-bootstrap-maven-plugin Maven プラグインが削除されました。

このプラグインは、Quarkus エクステンション開発専用です。したがって、カスタム Quarkus エクステンションを開発している場合は、アーティファクト ID を io.quarkus:quarkus-bootstrap-maven-plugin から io.quarkus:quarkus-extension-maven-plugin に変更する必要があります。

注記

この変更は、特にカスタムエクステンションの開発に関連します。標準アプリケーション開発の場合は、quarkus-maven-plugin プラグインを使用します。

1.7.2.9. Mutiny 2 の Java Flow への移行

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 および Kotlin の Panache メソッドによる 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 の機能強化: IN 句パラメーターの自動パディング

この 3.2 リリースでは、Hibernate Object-Relational Mapping (ORM) エクステンションが変更され、デフォルト設定として自動 IN 句パラメーターパディングが組み込まれました。この改善により、IN 句を組み込んだクエリーのキャッシュ効率が向上します。

quarkus.hibernate-orm.query.in-clause-parameter-padding のプロパティー値を false に設定すると、以前の機能に戻してこの機能を非アクティブにできます。

1.7.3.3. 新しい依存関係: Hibernate Reactive 2 および Hibernate ORM 6.2

この 3.2 リリースでは、Quarkus は Hibernate Reactive 1 ではなく Hibernate Reactive 2 エクステンションに依存します。この変更は、以前のバージョンと互換性のない動作およびデータベーススキーマの期待項目におけるいくつかの変更を意味します。

変更のほとんどは、Hibernate ORM 5.6 ではなく Hibernate ORM 6.2 に依存する Hibernate Reactive 2 に関連しています。

重要

Hibernate Reactive 2 エクステンションは、Red Hat build of Quarkus 3.2 のテクノロジープレビューとして利用できます。

詳細は、以下を参照してください。

1.7.3.4. Hibernate Search の変更

GeoPoint フィールドの projectable および sortable のデフォルトの変更

この 3.2 リリースでは、Hibernate Search 6.2 で GeoPoint フィールドのデフォルトの処理方法が変更されています。

Hibernate Search マッピングに、projectable オプションのデフォルト値と、sortable オプションのデフォルト値または Sortable.NO を使用する GeoPoint フィールドが含まれているとします。その場合、これらのフィールドに doc 値が欠落しているため、Elasticsearch スキーマの検証は起動時に失敗します。

この失敗を防ぐには、次のいずれかの手順を実行します。

  • 関連する GeoPoint フィールドのマッピングアノテーションに projectable = Projectable.NO を追加して、以前のデフォルトに戻します。
  • Elasticsearch インデックスを再作成し、データベースを再インデックス化します。これを行う最も簡単な方法は、dropAndCreateSchemaOnStart(true) を指定して MassIndexer を使用することです。

詳細は、Hibernate Search 6.2.3.Final: Migration Guide from 6.1 の Data format and schema changes セクションを参照してください。

非推奨になった、または名前が変更された設定プロパティー

この 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 プロパティーは非推奨となり、今後のバージョンで削除される予定です。これに置き換わる代替のプロパティーはありません。削除後は、トランザクションがオブジェクトのフィールドを変更した後、検索によって常に再インデックス化がトリガーされることが計画されています。つまり、トランザクションによってフィールドが "ダーティー" になった場合です。

詳細は、Hibernate Search 6.2.3.Final: Migration Guide from 6.1 の Configuration changes セクションを参照してください。

この 3.2 リリースでは、Quarkus は ValidatorFactory インスタンスの手動作成をサポートしていません。代わりに、Validation.buildDefaultValidatorFactory() メソッドを使用する必要があります。このメソッドは、コンテキストと依存性注入 (CDI) を通じて注入した Quarkus によって管理される ValidatorFactory インスタンスを返します。この変更の主な理由は、ValidatorFactory がネイティブ実行可能ファイルで動作するように慎重に作成する必要があることです。このリリースより前では、機能させることができる場合は、ValidatorFactory インスタンスを手動で作成し、自分で処理することができました。この変更は、独自の ValidatorFactory を作成するコンポーネントとの互換性を向上させることを目的としています。

詳細は、以下を参照してください。

1.7.3.6. Quartz ジョブのクラス名の変更

Java Database Connectivity (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';
Copy to Clipboard Toggle word wrap
1.7.3.7. QuarkusTransaction.run メソッドと QuarkusTransaction.call メソッドが非推奨に

QuarkusTransaction.run メソッドと QuarkusTransaction.call メソッドは非推奨となり、より明示的な新しいメソッドが採用されました。

これらの非推奨のメソッドに依存するコードを次のように更新します。

更新前

QuarkusTransaction.run(() -> { ... });
QuarkusTransaction.call(() -> { ... });
Copy to Clipboard Toggle word wrap

更新後

QuarkusTransaction.requiringNew().run(() -> { ... });
QuarkusTransaction.requiringNew().call(() -> { ... });
Copy to Clipboard Toggle word wrap

更新前

QuarkusTransaction.run(QuarkusTransaction.runOptions()
        .semantic(RunOptions.Semantic.REQUIRED),
        () -> { ... });
QuarkusTransaction.call(QuarkusTransaction.runOptions()
        .semantic(RunOptions.Semantic.REQUIRED),
        () -> { ... });
Copy to Clipboard Toggle word wrap

更新後

QuarkusTransaction.joiningExisting().run(() -> { ... });
QuarkusTransaction.joiningExisting().call(() -> { ... });
Copy to Clipboard Toggle word wrap

更新前

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;
        }),
        () -> { ... });
Copy to Clipboard Toggle word wrap

更新後

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(() -> { ... });
Copy to Clipboard Toggle word wrap

詳細は、USING TRANSACTIONS IN QUARKUS ガイドの Programmatic approach セクションを参照してください。

1.7.3.8. Narayana トランザクションマネージャープロパティーの名前の変更

この 3.2 リリースでは、quarkus.transaction-manager.object-store-directory 設定プロパティーの名前が quarkus.transaction-manager.object-store.directory に変更されました。古いプロパティー名を新しいプロパティー名に置き換えて、設定を更新します。

1.7.4. メッセージング

1.7.4.1. SmallRye Reactive Messaging からの vertx-kafka-client 依存関係の削除

このリリースでは、以前に非推奨となった smallrye-reactive-messaging-kafka エクステンションの vertx-kafka-client 依存関係が削除されます。クライアント実装には使用されませんでしたが、vertx-kafka-client は、io.vertx.kafka.client.serialization パッケージから io.vertx.core.buffer.Bufferio.vertx.core.json.JsonObject、および io.vertx.core.json.JsonArray 型のデフォルトの Kafka Serialization and Deserialization (SerDes) を提供しました。

この依存関係が必要な場合は、io.quarkus.kafka.client.serialization パッケージから前述の型の SerDes を取得できます。

1.7.5. ネイティブ

1.7.5.1. ネイティブコンパイル - ネイティブ実行可能ファイルと .so ファイル

この 3.2 リリースでは、GraalVM/Mandrel の変更は、Java Abstract Window Toolkit (AWT) エクステンションなどの .so ファイルに依存するエクステンションの使用に影響します。

これらのエクステンションを使用する場合は、対応する .so ファイルをネイティブコンテナーに追加またはコピーする必要があります。以下に例を示します。

COPY --chown=1001:root target/*.so /work/
COPY --chown=1001:root target/*-runner /work/application
Copy to Clipboard Toggle word wrap
注記

これに関連して、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.
Copy to Clipboard Toggle word wrap

このエラーメッセージは、ネイティブコンパイルで、アプリケーションを実行している CPU でサポートされていない高度な命令セットが使用されたことを意味します。この問題を回避するには、application.properties ファイルに次の行を追加します。

quarkus.native.additional-build-args=-march=compatibility
Copy to Clipboard Toggle word wrap

次に、ネイティブ実行可能ファイルを再ビルドします。この設定により、ネイティブコンパイルで古い命令セットの使用が強制され、互換性の可能性は高まりますが、最適化は低下します。

ターゲットアーキテクチャーを明示的に定義するには、native-image -march=list を実行して、サポートされる構成のリストを取得します。次に、ターゲットアーキテクチャーを指定します。以下に例を示します。

quarkus.native.additional-build-args=-march=x86-64-v4
Copy to Clipboard Toggle word wrap

古い AMD64 ホストでこの問題が発生している場合は、-march=compatibility を使用する前に -march=x86-64-v2 を試してください。

ネイティブイメージビルドオプション に関する GraalVM ドキュメントには、次のように記載されています: "[the -march parameter generates] instructions for a specific machine type. [This parameter] defaults to x86-64-v3 on AMD64 and armv8-a on AArch64.Use -march=compatibility for best compatibility, or -march=native for best performance if a native executable is deployed on the same machine or on a machine with the same CPU features.To list all available machine types, use -march=list."

注記

-march パラメーターは、GraalVM 23 以降でのみ使用できます。

1.7.5.3. テストの変更: 一部のアノテーションの削除

この 3.2 リリースでは、以前は非推奨だった @io.quarkus.test.junit.NativeImageTest および @io.quarkus.test.junit.DisabledOnNativeImageTest アノテーションが、rimage::images/ref_changes-that-affect-backward-compatibility-88d2f.png[] になりました。削除されたプロパティーは、新しいプロパティーに置き換えてださい。

Expand
表1.3 削除されたアノテーションと新しいアノテーション
削除されたアノテーション新しいアノテーション

@io.quarkus.test.junit.NativeImageTest

@io.quarkus.test.junit.QuarkusIntegrationTest

@io.quarkus.test.junit.DisabledOnNativeImageTest

@io.quarkus.test.junit.DisabledOnIntegrationTest

置き換えられたアノテーションは、削除されたアノテーションと機能的に同等です。

1.7.6. 可観測性

1.7.6.1. 非推奨の OpenTracing ドライバーが OpenTelemetry に置き換えられる

この 3.2 リリースでは、OpenTracing ドライバーのサポートが非推奨となりました。OpenTracing ドライバーの削除は、今後の Quarkus リリースで計画されています。

この 3.2 リリースでは、SmallRye GraphQL エクステンションが OpenTracing インテグレーションを OpenTelemetry に置き換えました。その結果、OpenTracing を使用する場合、エクステンションは GraphQL 操作のスパンを生成しなくなります。

また、このリリースでは、quarkus.smallrye-graphql.tracing.enabled 設定プロパティーは廃止され、削除されました。代わりに、OpenTelemetry エクステンションが存在する場合、SmallRye GraphQL エクステンションは自動的にスパンを生成します。

OpenTelemetry を使用するように Quarkus アプリケーションを更新して、今後の Quarkus リリースとの互換性を維持します。

1.7.6.2. Micrometer のデフォルトのメトリクスフォームが Prometheus に準拠する

この 3.2 リリースでは、Micrometer エクステンションは、Prometheus 標準に準拠して、デフォルトで application/openmetrics-text フォームでメトリクスをエクスポートします。この変更により、データの読み取りと解釈が容易になります。

以前のフォームでメトリクスを取得する場合は、Accept リクエストヘッダーを text/plain に変更できます。curl コマンドを使用すると、以下のようになります。

curl -H "Accept: text/plain" localhost:8080/q/metrics/
Copy to Clipboard Toggle word wrap

1.7.7. セキュリティー

Cross-Origin Resource Sharing (CORS) フィルターのデフォルトの動作が大幅に変更されました。以前のリリースでは、CORS フィルターが有効になっている場合、デフォルトですべてのオリジンがサポートされていました。この 3.2 リリースでは、すべてのオリジンのサポートがデフォルトで有効化されなくなりました。すべてのオリジンを許可する場合は、そのように明示的に設定する必要があります。

徹底的な評価の後、すべてのオリジンでサポートが必要であると判断した場合は、次の方法でシステムを設定します。

quarkus.http.cors=true
quarkus.http.cors.origins=/.*/
Copy to Clipboard Toggle word wrap

同一オリジンリクエストは、quarkus.http.cors.origins 設定を必要とせずにサポートを受けられます。したがって、quarkus.http.cors.origins の調整は、信頼できるサードパーティーのオリジンリクエストを許可する場合にのみ必須となります。このような状況では、すべてのオリジンを有効にすると、不必要なリスクが生じる可能性があります。

警告

最適なシステムセキュリティーを維持するために、この設定は注意して使用してください。

1.7.7.2. OpenAPI CORS サポートの変更

この 3.2 リリースでは、OpenAPI は Cross-Origin Resource Sharing (CORS) 設定を変更し、デフォルトでワイルドカード (*) オリジンサポートを有効化しなくなりました。この変更は、OpenAPI ドキュメントの漏洩の可能性を防ぎ、アプリケーションの全体的なセキュリティーを強化するのに役立ちます。

開発モードでワイルドカードオリジンのサポートを有効にする ことはできますが、潜在的なセキュリティーへの影響を考慮することが重要です。実稼働環境では、アプリケーションがセキュリティーの脅威にさらされることになるため、すべてのオリジンを有効にしないでください。CORS 設定が、実稼働環境で推奨されるセキュリティーのベストプラクティスと一致していることを確認してください。

1.7.7.3. デフォルトでの OIDC セッション Cookie の暗号化

この 3.2 リリースでは、OpenID Connect (OIDC) 認証コードフローの完了後に作成される OIDC セッション Cookie が、デフォルトで暗号化されます。ほとんどのシナリオでは、この変化に気づくことはほとんどありません。

ただし、mTLS または private_key_jwt 認証方法 (OIDC クライアントの秘密鍵が JSON Web Token (JWT) に署名する) が Quarkus と OIDC プロバイダーの間で使用される場合、メモリー内暗号化キーが生成されます。このキーの生成により、特に多くのリクエストを処理するアプリケーションでは、一部の Pod がセッション Cookie の復号化に失敗する可能性があります。この状況は、Cookie を復号化しようとしている Pod が、それを暗号化した Pod ではない場合に発生する可能性があります。

このような問題が発生した場合は、32 文字の暗号化シークレットを登録してください。以下に例を示します。

quarkus.oidc.token-state-manager.encryption-secret=eUk1p7UB3nFiXZGUXi0uph1Y9p34YhBU
Copy to Clipboard Toggle word wrap

暗号化されたセッション Cookie は、4096 バイトを超える可能性があるため、一部のブラウザーがそれを無視する可能性があります。この問題が発生した場合は、次の手順を 1 つ以上試してください。

  • quarkus.oidc.token-state-manager.split-tokens=true を設定すると、ID、アクセス、およびリフレッシュトークンが個別の Cookie に保存されます。
  • UserInfo をリクエストしたりダウンストリームサービスに伝播したりするためのロールのソースとしてアクセストークンを使用する必要がない場合は、quarkus.oidc.token-state-manager.strategy=id-refresh-tokens を設定します。
  • 代替優先度を 1 に設定して、カスタム quarkus.oidc.TokenStateManager コンテキストと依存性注入 (CDI) Bean を登録します。

アプリケーションユーザーが信頼できるネットワーク内から Quarkus アプリケーションにアクセスする場合は、次の設定を適用してセッション Cookie 暗号化を無効にします。

quarkus.oidc.token-state-manager.encryption-required=false
Copy to Clipboard Toggle word wrap
1.7.7.4. OIDC セッション Cookie のデフォルト SameSite 属性が Lax に設定される

この 3.2 リリースでは、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 トークンオーディエンス値をオーバーライドするには、quarkus.oidc.token.audience 設定プロパティーを設定します。ID トークン aud クレームを設定しない非準拠の OIDC プロバイダーを扱う場合は、quarkus.oidc.token.audienceany に設定できます。

警告

quarkus.oidc.token.audienceany に設定すると、3.2 アプリケーションのセキュリティーが低下します。

1.7.7.6. JWT キーとキーストアのデフォルトのパスワードの削除

このリリースより前は、Quarkus は JSON Web Token (JWT) キーとキーストアのデフォルトのパスワードとして password を使用していました。この 3.2 リリースでは、このデフォルト値は削除されました。

デフォルトのパスワードをまだ使用している場合は、application.properties ファイル内の次のプロパティーの password を置き換える新しい値を設定します。

quarkus.oidc-client.credentials.jwt.key-store-password=password
quarkus.oidc-client.credentials.jwt.key-password=password
Copy to Clipboard Toggle word wrap

1.7.8. Web

1.7.8.1. RESTEasy Reactive マルチパートへの変更

この 3.2 リリースでは、次の変更が RESTEasy Reactive のマルチパートサポートに影響します。

  • このリリースより前は、構文 @RestForm List<FileUpload> all を使用して、パラメーター名に関係なくすべてのファイルのアップロードをキャッチできましたが、これは曖昧で直感的ではありませんでした。現在、このフォームは、他の型の他のすべてのフォーム要素と同様に、all という名前のパラメーターのみを取得します。また、名前に関係なく、すべてのパラメーターを取得するには、@RestForm(FileUpload.ALL) List<FileUpload> all というフォームを使用する必要があります。
  • マルチパートフォームパラメーターのサポートが @BeanParam に追加されました。@MultipartForm アノテーションは非推奨になりました。@MultipartForm の代わりに @BeanParam を使用します。
  • @BeanParam はオプションとなり、@Rest* または @*Param アノテーションが付けられたフィールドを持つアノテーションの付いていないメソッドパラメーターに対して暗黙的に使用できるようになりました。
  • マルチパート要素は、@MultipartForm アノテーション付きクラス内にカプセル化されることに限定されなくなり、メソッドのエンドポイントパラメーターおよびエンドポイントクラスフィールドとして使用できます。
  • マルチパート要素は、FileUploadPathFilebyte[]、または InputStream 型でない限り、デフォルトで @PartType(MediaType.TEXT_PLAIN) MIME 型になります。
  • MediaType.TEXT_PLAIN MIME 型のマルチパート要素は、通常の ParamConverter インフラストラクチャーを使用してデシリアライズされるようになりました。このリリースより前は、デシリアライズには MessageBodyReader が使用されていました。
  • FileUploadPathFilebyte[]、または InputStream 型のマルチパート要素は特殊なケースであり、MessageBodyReader クラスや ParamConverter クラスではなく、RESTEasy Reactive エクステンションによってデシリアライズされます。
  • 他の明示的に設定された MIME 型のマルチパート要素は、引き続き適切な MessageBodyReader インフラストラクチャーを使用します。
  • マルチパート要素を List でラップして、同じ名前のパートのすべての値を取得できるようになりました。
  • @RestForm または @FormParam パラメーターを含むクライアント呼び出しは、FilePathBufferMulti<Byte>、または byte[] 型 (この場合のデフォルトは MediaType.MULTIPART_FORM_DATA コンテンツ型) でない限り、デフォルトで MediaType.APPLICATION_FORM_URLENCODED コンテンツ型になります。
  • クラス 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 Client は、Jackson に関連付けられたサーバー固有の MessageBodyReader クラスと MessageBodyWriter クラスを使用しなくなりました。このリリースより前は、REST Client がこれらのクラスを意図せずに使用していました。その結果、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;
    }
}
Copy to Clipboard Toggle word wrap

この機能を有効にするには、次のプロパティーを追加します。

quarkus.jaxb.validate-jaxb-context=true
Copy to Clipboard Toggle word wrap

さらに、このリリースでは、quarkus.jaxb.exclude-classes プロパティーが追加されています。このプロパティーを使用すると、JAXBContext へのバインドから除外するクラスを指定できます。完全修飾クラス名のコンマ区切りリストまたはパッケージのリストを指定できます。

たとえば、前の例の競合を解決するには、クラスの 1 つまたは両方を除外します。

quarkus.jaxb.exclude-classes=org.acme.one.Model,org.acme.two.Model
Copy to Clipboard Toggle word wrap

または、パッケージ内のすべてのクラスを除外することもできます。

quarkus.jaxb.exclude-classes=org.acme.*
Copy to Clipboard Toggle word wrap

1.8. バグ修正

Red Hat ビルドの Quarkus 3.2 では、安定性が向上し、重大なバグが解決され、最適なパフォーマンスとセキュリティーが確保されます。Red Hat build of Quarkus の最新の修正を入手するには、利用可能な最新バージョンである 3.8.5.SP1 を使用する必要があります。

1.8.1. Red Hat ビルドの Quarkus 3.2.12 SP1 で解決されたセキュリティー修正

  • CVE-2024-7254 com.google.protobuf/protobuf: プロトコルバッファーの StackOverflow の脆弱性
  • CVE-2024-40094 com.graphql-java.graphql-java: GraphQL Java での制限のないリソースの割り当てまたはスロットリング
  • CVE-2021-44549 org.eclipse.angus/angus-mail: 安全な SMTPS 通信の Secure Server Identity Check の有効化
  • CVE-2024-47561 org.apache.avro/avro: Schema parsing may trigger Remote Code Execution (RCE)

1.8.2. Red Hat ビルドの Quarkus 3.2.12 で解決されたセキュリティー修正

  • CVE-2024-2700 io.quarkus/quarkus-core: Quarkus アプリケーションへのローカル設定プロパティーの漏洩
  • CVE-2024-29025 io.netty/netty-codec-http: 制限やスロットリングのないリソースの割り当て

1.8.3. Red Hat ビルドの Quarkus 3.2.11 で解決されたセキュリティー修正

  • CVE-2024-1597 org.postgresql/postgresql:pgjdbc: PostgreSQL JDBC ドライバーの脆弱性により、PreferQueryMode=SIMPLE での SQL の注入が可能になります。
  • CVE-2024-1979 io.quarkus/quarkus-kubernetes-deployment: アノテーションによる情報漏洩
  • CVE-2024-1726 io.quarkus.resteasy.reactive/resteasy-reactive: RESTEasy Reactive の特定の継承されたエンドポイントに対する遅延セキュリティーチェックにより、サービス拒否につながる可能性がある
  • CVE-2024-25710 org.apache.commons/commons-compress: 破損した DUMP ファイルを使用した無限のサービス拒否
  • CVE-2024-26308 org.apache.commons/commons-compress: 不正な形式の Pack200 ファイルの展開によって発生する OutOfMemoryError
  • CVE-2024-1300 io.vertx:vertx-core: TLS および SNI が有効になっている TCP サーバーでのメモリーリーク
  • CVE-2024-1023 io.vertx:vertx-core: Vert.x の Netty FastThreadLocal データ構造の使用からのメモリーリーク

1.8.4. Red Hat ビルドの Quarkus 3.2.10 で解決されたセキュリティー修正

  • CVE-2023-22102 mysql/mysql-connector-java: Connector/J の不特定の脆弱性 (CPU 2023 年 10 月)
  • CVE-2023-48795 org.apache.sshd/sshd-core: ssh: Binary Packet Protocol (BPP) に対する Prefix Truncation攻撃
  • CVE-2023-4043 org.eclipse.parsson/parsson: 大量の解析によるサービス拒否

1.8.5. Red Hat ビルドの Quarkus 3.2.9.SP1 で解決されたセキュリティー修正

  • CVE-2023-5675 io.quarkus.resteasy.reactive/resteasy-reactive: quarkus: "quarkus.security.jaxrs.deny-unannotated-endpoints" または "quarkus.security.jaxrs.default-roles-allowed" プロパティーが使用されている場合の Quarkus RestEasy Reactive および Classic の認証の不具合
  • CVE-2023-6267 io.quarkus/quarkus-resteasy: quarkus: REST リソースがアノテーションとともに使用される場合、セキュリティーチェックの前に JSON ペイロードが処理される

1.8.6. Red Hat ビルドの Quarkus 3.2.9 で解決されたセキュリティー修正

  • CVE-2023-43642: snappy-java: snappy-java でチャンク長の上限チェックが欠落していると、サービス拒否 (DoS) の影響が生じる可能性がある
  • CVE-2023-39410: avro: apache-avro: Apache Avro Java SDK: Avro Java SDK で信頼できないデータをデシリアライズするときのメモリー

1.8.7. Red Hat ビルドの Quarkus 3.2.6 で解決されたセキュリティー修正

  • CVE-2023-33202: bcpkix: bc-java: org.bouncycastle.openssl.PEMParser クラスで ASN.1 で作成されたデータを解析中にメモリー不足が発生
  • CVE-2023-4853: quarkus-http: quarkus: HTTP セキュリティーポリシーの回避
  • CVE-2023-44487: netty-codec-http2: HTTP/2: 複数の HTTP/2 対応 Web サーバーが DDoS 攻撃 (ラピッドリセット攻撃) からの影響を受ける

1.8.8. その他の機能拡張とバグ修正

  • QUARKUS-4279 BOM で、Mime4j ライブラリーコア、dom、およびストレージ jar を管理します。
  • QUARKUS-3964 Fix tracing protocol configuration to only allow GRPC
  • QUARKUS-3963 Handle generic types for ParamConverter in REST Client
  • QUARKUS-3962 Never register server-specific providers in REST Client (fixed)
  • QUARKUS-3960 Register methods of RESTeasy Reactive parameter containers for reflection
  • QUARKUS-3959 Use an empty string in an SSE event when there is no data
  • QUARKUS-3958 Update the Infinispan client intelligence section documentation
  • QUARKUS-3956 Update the keycloak-admin-client extension to recognize the quarkus.tls.trust-all property
  • QUARKUS-3955 Always run a JPA password action
  • QUARKUS-3954 Reactive REST Client: check for ClientRequestFilter when skipping @Provider auto-discovery
  • QUARKUS-3950 Fix various minor issues in the quarkus update command
  • QUARKUS-3949 Fix Panache bytecode enhancement for @Embeddable records
  • QUARKUS-3948 Save pathParamValues encoded and perform decoding when requested
  • QUARKUS-3947 Fix != expression in @PreAuthorize check
  • QUARKUS-3945 Support using commas to add extensions with CLI
  • QUARKUS-3943 Fixes stork path param resolution in REST Client
  • QUARKUS-3941 Do not expand config properties for Gradle Workers
  • QUARKUS-3940 Verify duplicated context handling when caching a Uni
  • QUARKUS-3939 Always set ssl and alpn for non-plain-text with Vert.x gRPC channel
  • QUARKUS-3851 Upgrade to Hibernate ORM 6.2.18.Final
  • QUARKUS-3841 Hibernate issue with @OneToMany mappedBy association(HHH-16593)
  • QUARKUS-3791 Jandex indexing throws an NPE with the latest Oracle driver
  • QUARKUS-3779 [GSS](3.2.z) RESTEASY-3380 - Source references exposed in RESTEasy error response
  • QUARKUS-3757 Unfiltered traces from the management interface
  • QUARKUS-3420 Duplicate artifacts brought in by extraneous io.quarkus in ER4
  • QUARKUS-3273 Duplicated artifacts in Ghost
  • QUARKUS-3598 Version alignment with Red Hat Build of Apache Camel for Red Hat build of Quarkus 3.2.0
  • QUARKUS-3586 Automate step of creating depstobuild.txt
  • QUARKUS-3476 quarkus-bom-deps-to-build.txt not delivered with 2.13.8.SP3.CR1 and 3.2.9.CR1
  • QUARKUS-3761 Hibernate Reactive doesn’t work with Red Hat build of Quarkus 3.2.9.CR1 but works with upstream release
  • QUARKUS-3759 Missing Sources for mvnpm/importmap in 3.2.9
  • QUARKUS-3764 Red Hat build of Quarkus 3.2.9.CR1 contains 2 Red Hat build of Quarkus BOMs, one of them has 555 missing dependencies in Maven repo zip
  • QUARKUS-3439 Red Hat build of Quarkus create app with gradle causing unresolved netty dependencies
  • QUARKUS-1481 Platform source zips contain only quarkus source
  • QUARKUS-3758 Duplicate Pom for io.github.crac:org-crac and Jboss Threads in 3.2.9
  • QUARKUS-3377 support quarkus-keycloak-authorization again in 3.2.z
  • QUARKUS-3597 Productize Red Hat build of Quarkus JOSDK extensions 6.3.3
  • QUARKUS-3424 Increase in number of duplicate artifacts with no direct dependency lineage to platform boms/supported extensions
  • QUARKUS-3582 Red Hat build of Quarkus 3.2: move start-stop metrics and tech empower jobs to JDK17 in performance labs
  • QUARKUS-3570 Adding the JUL URL to the Logging guide update
  • QUARKUS-3571 Make hibernate reactive status clear in docs
  • QUARKUS-3546 Fix handling of HTTP/2 H2 empty frames in RestEasy Reactive
  • QUARKUS-3564 Remove update guide from docs yml
  • QUARKUS-3565 Enhancements to Configuration section of the Logging guide
  • QUARKUS-3566 Applying the QE feedback for the Logging guide
  • QUARKUS-3567 Doc link fixes & enhancements to Bearer token authentication tutorial
  • QUARKUS-3572 Fix doc link Asciidoc change link to xref where applicable
  • QUARKUS-3573 Config doc - Avoid processing methods if not @ConfigMapping
  • QUARKUS-3662 Tiny grammar tweaks for the Authorization of web endpoints guide
  • QUARKUS-3563 Fix title of upx.adoc
  • QUARKUS-3569 Remove 'Security vulnerability detection' topic from downstream doc list
  • QUARKUS-3568 Additional review and application of QE feedback to the Datasource guide
  • QUARKUS-3339 Vert.x SQL client hangs when it inserts null or empty string into Oracle DB
  • QUARKUS-3367 HTTP/1.1 upgrade to H2C cannot process fully request entity with a size greater than the initial window size
  • QUARKUS-3669 Bump Keycloak version to 22.0.6
  • QUARKUS-3670 Vert.x: fix NPE in ForwardedProxyHandler
  • QUARKUS-3668 Fix dead link in infinispan-client-reference.adoc
  • QUARKUS-3671 Fix quarkus update regression on extensions
  • QUARKUS-3672 Take @ConstrainedTo into account for interceptors
  • QUARKUS-3680 Let custom OIDC token propagation filters customize the exchange status
  • QUARKUS-3679 Update Vert.x version to 4.4.6
  • QUARKUS-3663 Tiny Vale tweaks for Datasource and Logging guide
  • QUARKUS-3664 Duplicate Authorization Bearer Header Fix
  • QUARKUS-3666 Fixing Db2 Driver typo
  • QUARKUS-3675 Make the ZSTD Substitutions more robust
  • QUARKUS-3677 Fix deployer detection in quarkus-maven-plugin
  • QUARKUS-3676 Fix handling of HTTP/2 H2 empty frames in RestEasy Reactive
  • QUARKUS-3665 More reliable test setup in integration-tests/hibernate-orm-tenancy/datasource
  • QUARKUS-3674 QuarkusSecurityTestExtension after each call should not be made for tests without @TestSecurity
  • QUARKUS-3673 Dev UI: Fix height in Rest Client
  • QUARKUS-3667 Fix assertions in Hibernate ORM 5.6 compatibility tests
  • QUARKUS-3678 ArC: fix PreDestroy callback support for decorators
  • QUARKUS-3691 Prepare for ORM update
  • QUARKUS-3689 Fix issue in Java migration in dev-mode

1.9. 既知の問題

Red Hat build of Quarkus 3.2 の制限事項と回避策については、次の既知の問題を確認してください。

CVE-2023-6267 に対処するために Red Hat build of Quarkus バージョン 3.2.9.SP1 に実装されたセキュリティー修正により、破壊的変更がありました。

この破壊的変更は、RestEasy Classic で複数の OIDC プロバイダーを使用する場合にのみ関係があり、コンテキストと依存性注入 (CDI) インターセプターを使用して OIDC テナント設定識別子をプログラム的に解決する場合に発生します。

この修正が行われる前は、CDI インターセプターは認証チェックの前に実行されていました。修正を導入すると、CDI インターセプターがトリガーされる前に認証が行われます。したがって、CDI インターセプターを使用して複数の OIDC プロバイダー設定識別子を解決することは、機能しなくなります。RestEasy Reactive アプリケーションへの影響はありません。

回避策: quarkus.oidc.TenantResolver メソッドを使用して、現在の OIDC 設定テナント ID を解決します。

詳細は、Quarkus の USING OPENID CONNECT (OIDC) MULTI-TENANCY ガイドの Resolving Tenant Identifiers with Annotations セクションを参照してください。

1.9.2. Podman 4.6 以降は、SELinux および Testcontainers ライブラリーでは動作しません

Ryuk コンテナーは、開発モードで使用される testcontainers ライブラリーに不可欠ですが、Podman 4.6 以降を使用している場合は起動できません。具体的には、これらの問題は SELinux を使用するときに発生し、Ryuk コンテナーが正常に起動できなくなります。

具体的な問題と対応する回避策は次のとおりです。

  • Docker デーモンソケットへの接続が失敗する: デフォルトでは、Permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock というエラーが発生します。

    • 回避策: containers.conf ファイルを更新して label=false を含めます。
  • SELinux とコンテナー設定の不一致: SELinux がオペレーティングシステムでは有効になっているが、containers.conf ファイルでは無効になっている場合、InternalServerErrorException が発生します。

    • 回避策: sudo setenforce 0 を実行して、SELinux を無効にします。
  • 未解決の Oracle Cloud Infrastructure (OCI) 権限エラー: OCI permission denied というエラーメッセージが表示されます。この問題の回避策はありません。

これらの問題を考慮して、次のオプションを検討してください。

  • この既知の問題が解決されるまでは、Ryuk コンテナーの使用を控えてください。
  • Red Hat Enterprise Linux 8 以降と互換性のある、バージョン 4.5.x などの Podman の以前のバージョンを使用します。

詳細は、以下を参照してください。

1.9.3. Testcontainers によって生成されたコンテナーが時々失敗する

開発モードの継続テスト用に testcontainers ライブラリーによって生成されたコンテナーが、Broken pipeline エラーで失敗することがあります。

回避策: この問題を回避するには、開発モードを再起動します。この問題の本番モードへの影響はありません。

詳細は、QUARKUS-3448 - Broken pipe when creating containers with Podman を参照してください。

1.9.4. 特定のフロー制御条件下で H2C への HTTP/1.1 アップグレードが失敗する

HTTP/1.1 接続を H2C にアップグレードする場合、サーバーは H2 フローコントローラーの受信 HTTP メッセージを考慮しません。その結果、ウィンドウサイズがゼロに達したときにメッセージが未処理になります。

この問題の修正は、今後のリリースで予定されています。

回避策: 現時点では回避策はありません。この問題が修正されるまで、メッセージペイロードサイズがフロー制御ウィンドウサイズを超える場合は、HTTP/1.1 接続を H2C にアップグレードしないでください。

詳細は、以下を参照してください。

1.9.5. 特定の Oracle JDBC ドライバーバージョンで Reactive Oracle データソースが失敗する

Reactive Oracle データソースは、Oracle の Java™ Database Connectivity (JDBC) driverReactive Extensions に依存しています。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 クエリーを実行する前に、シーケンス値をロードします。

詳細は、QUARKUS-3339 - Vertx SQL client hangs when it inserts a null or empty string into Oracle DB を参照してください。

aarch64 上の Linux や x86-64 上の Windows など、新しくサポートされたプラットフォームで Vert.x エクステンションを使用するアプリケーションは、Red Hat がビルドおよび提供したものではなく、Quarkus コミュニティーバージョンの com.aayushatharva.brotli4j アーティファクトを誤ってダウンロードしてしまいます。この問題による機能面への影響はありません。

この問題の修正は、今後のリリースで予定されています。

回避策: 現時点では回避策はありません。

詳細は、QUARKUS-3314 - com.aayushatharva.brotli4j:native-linux-aarch64 and native-windows-x86_64 are not productized を参照してください。

librocksdbjni-win64.dll ネイティブライブラリーが Red Hat build of Quarkus に含まれていないため、Kafka Streams は Windows オペレーティングシステムで RocksDB をロードできません。

回避策: Windows 上で Quarkus Kafka Streams を実行するための回避策はありません。修正が利用可能になるか、このエクステンションが Windows でサポートされないことが確認されるまでは、Windows 以外のオペレーティングシステムを使用してください。

注記

Kafka Streams は テクノロジープレビュー 機能です。

詳細は、QUARKUS-3434 - Ghost: Quarkus Kafka Streams not supported on Windows due to missing librocksdbjni-win64.dll を参照してください。

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 アーキテクチャー上のこれらのコンポーネント用のネイティブライブラリーがありません。代わりに、Red Hat によってビルドおよび提供されたバージョンではなく、Quarkus コミュニティーバージョンのアーティファクトがダウンロードされます。この問題による機能面への影響はありません。

回避策: 現時点では回避策はありません。

詳細は、以下を参照してください。

1.9.9. org.apache.maven:maven:pom:3.6.3 への依存によりプロキシーの問題が発生する可能性がある

org.apache.maven:maven:pom:3.6.3 への依存関係は、特定の Quarkus エクステンションを使用すると解決される可能性があります。これは Gradle プラグインに固有のものではありませんが、親 Project Object Model (POM) 階層に io.smallrye:smallrye-parent:pom:37 があるプロジェクトに影響します。この依存関係により、バージョン 3.6.x の org.apache.maven アーティファクトへのアクセスを制限するプロキシーの背後にある環境で、ビルドエラーが発生する可能性があります。Maven 3.6.3 のバイナリーパッケージは、Quarkus コアフレームワークまたはサポートされている Quarkus エクステンションの依存関係としてダウンロードされません。

回避策: 現時点では回避策はありません。

詳細は、QUARKUS-1025 - Gradle plugin drags in maven core 3.6.x を参照してください。

Red Hat エクステンションレジストリーを使用して JBang によって生成されたスターターアプリケーションをビルドすると、postBuild() の実行時に不特定のエラーが発生する可能性があります。

[jbang] [ERROR] Issue running postBuild()
dev.jbang.cli.ExitException: Issue running postBuild()
Copy to Clipboard Toggle word wrap

Red Hat build of Quarkus は、この JBang シナリオまたは開発ツールをサポートしていません。

回避策: 現時点では回避策はありません。

詳細は、QUARKUS-3371 - Application created with jbang can not be built を参照してください。

法律上の通知

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

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat