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


Red Hat build of Quarkus 3.20

Red Hat Customer Content Services

概要

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

Red Hat build of Quarkus ドキュメントへのフィードバックの提供

エラーを報告したり、ドキュメントを改善したりするには、Red Hat Jira アカウントにログインし、課題を送信してください。Red Hat Jira アカウントをお持ちでない場合は、アカウントを作成するように求められます。

手順

  1. 次のリンクをクリックして チケットを作成します
  2. Summary に課題の簡単な説明を入力します。
  3. Description に課題や機能拡張の詳細な説明を入力します。問題があるドキュメントのセクションへの URL も記載してください。
  4. Submit をクリックすると、課題が作成され、適切なドキュメントチームに転送されます。

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

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

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

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

1.1. Red Hat build of Quarkus について

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

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

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

1.2. 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 のメジャーリリースのライフサイクルは、フルサポートとメンテナンスサポートの 2 つのサポートフェーズに分かれています。

Red Hat build of Quarkus の製品ライフサイクル、タイムライン、サポートポリシーの詳細は、Red Hat カスタマーポータルにログインし、ナレッジベースの記事である 製品ライフサイクル および Red Hat build of Quarkus のライフサイクルとサポートポリシー を参照してください。

以前のリリースにバックポートされた Common Vulnerabilities and Exposures (CVE) の修正とバグ修正

いいえ

はい

Red Hat build of Quarkus では、選択された CVE 修正とバグ修正がサポートされているストリームに定期的にバックポートされます。

メンテナンスサポートの詳細は、Red Hat build of Quarkus のライフサイクルとサポートポリシー を参照してください。

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 でサポートされる構成 を参照してください。

重要

ネイティブ Linux 実行可能ファイルをビルドする ために、Red Hat build of Quarkus は GraalVM Mandrel に基づく Red Hat build of Quarkus Native Builder イメージ (quarkus/mandrel-for-jdk-21-rhel8) の使用をサポートしています。

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

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

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

1.3.1. クラウド

1.3.1.1. OpenShift および Kubernetes: バージョン 7.1 への Fabric8 Kubernetes Client のアップグレード

Red Hat build of Quarkus 3.20 では、次のエクステンションによって Fabric8 Kubernetes Client がバージョン 6.13 から 7.1 にアップグレードされます。

  • quarkus-openshift
  • quarkus-openshift-client
  • quarkus-kubernetes
  • quarkus-kubernetes-client

このアップグレードにより、パフォーマンス、互換性、テストにいくつかの改善がもたらされます。

Fabric8 Kubernetes Client 7.1 の主な利点は次のとおりです。

  • 互換性を向上させるために Kubernetes API v1.32 をサポートします。
  • パフォーマンスを向上させるために、OkHttp の代わりに Vert.x を使用します。
  • カスタムリソース定義 (CRD) をより簡単に生成するための新しいツールを追加します。
  • より優れたテスト用に Vert.x ベースの MockWebServer を使用します。

この変更により、重大な変更が導入されます。詳細は、「以前のバージョンとの互換性に影響を与える変更」セクションの こちらのリリースノート を参照してください。

注記

Red Hat build of Quarkus 3.20 では、quarkus-kubernetes エクステンションは開発者プレビューとしてサポートされており、quarkus-kubernetes-client エクステンションは現在サポートされていません。これらのエクステンションを使用すると、前述の変更点が移行に影響する可能性があります。

この変更には手動による介入が必要です。これは、Red Hat build of Quarkus 3.20 へのアプリケーションの移行 ガイドで説明されている自動更新プロセスには含まれていません。

1.3.2. コア

1.3.2.1. ビルダーおよびランタイムベースイメージが UBI 9 にアップグレードされる

Red Hat build of Quarkus 3.20 以降、Red Hat ビルダーおよびランタイムベースイメージは、デフォルトで Red Hat Universal Base Image 9 (UBI 9) を使用します。

以下のイメージがアップグレードされます。

Expand
表1.1 アップグレードされたイメージ
イメージUBI 8 バージョンUBI 9 バージョン

ベースイメージ

  • registry.access.redhat.com/ubi8/ubi:8.10
  • OpenJDK 17: registry.access.redhat.com/ubi8/openjdk-17
  • OpenJDK 21: registry.access.redhat.com/ubi8/openjdk-21
  • registry.access.redhat.com/ubi9/ubi:9.5
  • OpenJDK 17: registry.access.redhat.com/ubi9/openjdk-17
  • OpenJDK 21: registry.access.redhat.com/ubi9/openjdk-21

最小限のイメージ

  • registry.access.redhat.com/ubi8/ubi-minimal:8.10
  • registry.access.redhat.com/ubi9-minimal:9.5

ランタイムイメージ

  • OpenJDK 17: registry.access.redhat.com/ubi8/openjdk-17-runtime:1.21
  • OpenJDK 21: registry.access.redhat.com/ubi8/openjdk-21-runtime:1.21
  • OpenJDK 17: registry.access.redhat.com/ubi9/openjdk-17-runtime:1.21
  • OpenJDK 21: registry.access.redhat.com/ubi9/openjdk-21-runtime:1.21

ビルダーイメージ (Mandrel)

  • registry.access.redhat.com/quarkus/mandrel-for-jdk-21-rhel8:23.1
  • 変更なし。Red Hat は、引き続き UBI 8 をベースにした Mandrel ビルダーイメージを使用します。ただし、UBI8 で作成されたネイティブ実行ファイルは UBI9 で実行できます。詳細は、以下の注記を参照してください。

このアップグレードでは重大な変更が導入されます。ビルダーおよびランタイムベースイメージが UBI 9 にアップグレードされます

UBI 9 イメージに手動でアップグレードする場合のオプションの概要を次の表に示します。

Expand
表1.2 UBI 9 に手動でアップグレードするためのオプション
イメージアクション

ビルダーイメージ

何もする必要はありません。Red Hat build of Quarkus では、ビルダーイメージが自動的にアップグレードされます。ただし、次のように手動でビルダーイメージを指定することもできます。

  • -Dquarkus.native.container-build=true
  • registry.access.redhat.com/quarkus/mandrel-for-jdk-21-rhel8:23.1

ランタイムイメージ

モードに応じて、次の設定を適用します。

  • JVM モード:

    • src/main/docker/ ディレクトリーの Dockerfile で、コンテナーのベースイメージとして registry.access.redhat.com/ubi9/openjdk-21-runtime:1.21 を指定します。
  • ネイティブモード:

    • UBI 最小イメージを使用するには、registry.access.redhat.com/ubi9-minimal:9.5 を指定します。
注記

Red Hat build of Quarkus のネイティブモードでは、コンテナー内ビルドを使用してネイティブ実行可能ファイルを生成する場合、Mandrel ビルダーイメージを使用する必要があります。Red Hat build of Quarkus 3.20 では、この Mandrel ビルダーイメージは引き続き UBI 8 に基づいていますが、UBI 8 で生成されたネイティブ実行可能ファイルは UBI 9 でも実行できます。

ネイティブ実行可能ファイルが作成されると、それをコンテナーイメージにコピーしますが、そのコンテナーイメージにはベースイメージとしてランタイムイメージが必要になります。推奨されるランタイムイメージは、UBI 9 ベースのランタイムイメージです: registry.access.redhat.com/ubi9-minimal:9.5

UBI 9 ベースのランタイムイメージで問題が発生した場合は、手動で UBI 8 ベースのイメージに切り替えることができます。詳細は、ビルダーおよびランタイムベースイメージが UBI 9 にアップグレードされる を参照してください。

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

1.3.2.2. 開発モードでの条件付きエクステンション依存関係

Red Hat build of Quarkus 3.20 では、エクステンションは開発モード (dev モード) でのみ、または特定の条件が満たされた場合にのみアクティブ化される条件付き依存関係を宣言できるようになり、通常モードとテストモードでの不要な依存関係を回避できます。

詳細は、Quarkus ガイド「条件付きエクステンションの依存関係」の 開発モードのみのエクステンションの依存関係 セクションを参照してください。

1.3.2.3. デフォルトのロケール設定の強化

Red Hat build of Quarkus 3.20 では、Mandrel バージョン 24.2 以降に合わせてロケール処理が更新されています。

アプリケーションは、ビルドシステムのロケールに関係なく、実行時に一貫したデフォルトのロケールを使用するようになりました。この変更により、環境間でのロケールに依存する動作の移植性と予測可能性が向上します。

この変更により、重大な変更が導入されます。詳細は、「以前のバージョンとの互換性に影響を与える変更」セクションの こちらのリリースノート を参照してください。

この変更には手動による介入が必要です。これは、Red Hat build of Quarkus 3.20 へのアプリケーションの移行 ガイドで説明されている自動更新プロセスには含まれていません。

1.3.3. データ

1.3.3.1. Agroal: Dev UI のデータベース接続管理が強化される

Red Hat build of Quarkus 3.20 以降、quarkus-agroal エクステンションにより、Dev UI へのデータベース接続を監視するための専用の Agroal - Database connection pool カードとページが追加されます。

Quarkus アプリケーションに quarkus-agroal エクステンションを使用する JDBC ドライバーエクステンションが含まれている場合、そのエクステンションはアプリケーションに自動的に含まれます。

Dev UI では、Agroal - Database connection pool カードをお気に入り (星印) にすることができます。また、Database view のリンクをカードから Dev UI メニューにドラッグすることもできます。Database view をクリックすると、Agroal - Database connection pool ページが開き、接続 URL を含むすべてのアクティブなデータソースを表示できます。

この機能拡張により、Dev UI 内でのデータベースの監視と設定が合理化され、デバッグとデータベース管理が改善されます。

1.3.3.2. データソース: ArC による起動時のデータソースの検証

Red Hat build of Quarkus 3.20 では、quarkus-datasource エクステンションが、ArC に最適化された依存性注入フレームワークを使用して、アプリケーションの起動時にデータソース設定を検証するようになりました。この機能拡張により、設定ミスが早期に検出されるようになり、ランタイムエラーを防ぎ、障害のあるインスタンスにトラフィックがルーティングされるリスクを低減します。

Red Hat build of Quarkus における主な変更点:

  • データソースがアプリケーション Bean に注入されると、アプリケーションは起動時にその設定を検証します。必須プロパティーが欠落しているなど、誤って設定されたデータソースは、最初のアクセス時にエラーを引き起こすのではなく、早期に失敗します。
  • 非アクティブとしてマークされているデータソース (quarkus.datasource.active=false)、または必須プロパティーが欠落しているデータソースは初期化されず、有効なデータソースのみがアプリケーションで使用できるようにします。
  • 必須データソースが非アクティブな場合、Hibernate ORM などのエクステンションは起動時に失敗し、利用できないリソースをアプリケーションが使用しないようになりました。
  • 非アクティブとしてマークされているデータソース (quarkus.datasource.active=false) または必須プロパティーが欠落しているデータソースはヘルスチェックから除外され、関連するデータソースのみが診断に寄与するようにします。

詳細は、「データソースの設定」ガイドの データソースのアクティブ化または非アクティブ化 セクションを参照してください。

1.3.4. メッセージング

Red Hat build of Quarkus 3.20 では、SmallRye Reactive Messaging Kafka コネクターを通じて Apache Kafka トランザクションのサポートを追加する quarkus-messaging-kafka エクステンションが導入されました。この機能により、複数の Kafka トピックとパーティションへのアトミックな書き込みが可能になり、トランザクション内のすべてのレコードをコミットするか、一切コミットしないかを確実にすることで、イベント駆動型アプリケーションのデータの整合性を高めます。

この機能は テクノロジープレビュー として利用できます。

詳細は、Quarkus ガイド「Apache Kafka リファレンス」の Kafka トランザクション セクションを参照してください。

1.3.5. 可観測性

1.3.5.1. Dev UI: エクステンション開発者は Dev UI フッターにログタブを追加できる

Red Hat build of Quarkus 3.20 以降、エクステンション開発者は Dev UI フッターにカスタムログタブを作成し、そこにログデータをストリームできます。このプロセスは、Dev UI でカードまたはページを作成するプロセスに似ています。

ログタブは、アプリケーション開発者がツールを切り替えることなく、アプリケーションを監視およびトラブルシューティングできるように継続的なデータを提供します。ページは他のページに移動するとバックエンドから切断されますが、ログタブは永続的に接続されたままになります。

詳細は、Quarkus ガイド「エクステンション開発者向けの Dev UI」の フッタータブの追加 セクションを参照してください。

1.3.5.2. Grafana OTel LGTM ダッシュボード

Red Hat build of Quarkus 3.20 は、LGTM Dev Services を使用する際に、事前設定された複数の Grafana ダッシュボードを提供します。これらのダッシュボードは、アプリケーションのメトリクス、トレース、およびログを視覚化します。また、シームレスなデータ収集とプレゼンテーションのために OpenTelemetry を活用しています。一部のダッシュボードでは、OpenTelemetry 出力など、複数の方法で Micrometer データが表示されます。各ダッシュボードは、特定のアプリケーションセットアップに合わせて調整されています。

利用可能なダッシュボードは次のとおりです。

  • Quarkus Micrometer OpenTelemetry: Micrometer および OpenTelemetry エクステンションで使用されます。
  • Quarkus Micrometer OTLP Registry: Micrometer OTLP レジストリーエクステンションで使用されます。
  • Quarkus Micrometer Prometheus Registry: Micrometer Prometheus レジストリーエクステンションで使用されます。
  • Quarkus OpenTelemetry Logging: OpenTelemetry エクステンションからのログを表示します。

一部のダッシュボードパネルでは、スライディングタイムウィンドウでの計算を行うため、正確なデータが表示されるまでに数分かかる場合があります。

1.3.5.3. OpenTelemetry: OpenTelemetry トレーシングから特定の URI を除外する

この更新以降、quarkus.otel.traces.suppress-application-uris 設定プロパティーを使用して、OpenTelemetry トレーシングから特定の URI を除外できるようになりました。これにより、トレーサーが無視する URI パターンのコンマ区切りリストを定義できます。

たとえば、quarkus.otel.traces.suppress-application-uris=trace,ping,people* を設定すると、/trace および /ping URI のトレースだけでなく、/people/1/people/1/cars などの /people で始まるすべての URI のトレーシングもオフになります。

カスタムの quarkus.http.root-path を使用する場合は、必ずそれを設定に含めてください。

1.3.5.4. OpenTelemetry: SimpleSpanProcessor によるスパンとログの即時エクスポート

Red Hat build of Quarkus 3.20 では、quarkus-opentelemetry エクステンションによって、終了するとすぐにスパンとログをエクスポートする SimpleSpanProcessor のサポートが追加されました。この動作は、サーバーレス環境や短命のアプリケーションで特に役立ちます。

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

quarkus.otel.simple=true

この設定は、デフォルトの BatchSpanProcessor を置き換え、スパンとログがバッファリングされるのではなく、すぐに送信されるようにします。この変更は、アプリケーションがシャットダウンする前にテレメトリーデータが確実にエクスポートされるようにするため、Lambda 関数やその他の短期的なプロセスにとって極めて重要です。これにより、バッチ処理の遅延によるデータ損失を防ぐことができます。

1.3.5.5. OpenTelemetry: ロギングのサポートが導入される

Red Hat build of Quarkus 3.20 では、quarkus-opentelemetry エクステンションが OpenTelemetry (OTel) ロギングをサポートするようになりました。この機能を使用すると、対話型 Web アプリケーションに分散ロギングを提供できます。

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

quarkus.otel.logs.enabled=true

詳細は、Quarkus ガイド OpenTelemetry Logging の使用 を参照してください。

1.3.5.6. OpenTelemetry: MicroProfile Telemetry 2.0 に準拠したメトリクス統合

Red Hat build of Quarkus 3.20 では、OpenTelemetry メトリクスが有効になっている場合、quarkus-opentelemetry エクステンションによって、MicroProfile Telemetry 2.0 仕様に準拠した JVM および HTTP サーバー要求メトリクスの自動計装が提供されます。

OpenTelemetry メトリクスはデフォルトで無効になっています。JVM および HTTP サーバー要求メトリクスを収集するには、quarkus.otel.metrics.enabled=true を設定して有効にする必要があります。

対応する設定プロパティーはデフォルトで有効になっていますが、設定で quarkus.otel.instrument.jvm-metrics=false または quarkus.otel.instrument.http-server-metrics=false を設定することで無効化できます。

OpenTelemetry メトリクスと統合したフォールトトレランス機能は、現時点ではサポートされていません。

注記

Micrometer エクステンションも使用している場合は、潜在的な競合を防ぐために OpenTelemetry 計装を無効にする必要があります。

さらに、quarkus.otel.metrics.exporter=logging を設定して logging エクスポーターを設定すると、ログに OpenTelemetry 内部トレーシング関連のメトリクスが表示される場合があります。logging エクスポーターはデバッグ目的のみを想定しており、実稼働環境には推奨されません。

1.3.6. セキュリティー

1.3.6.1. 認証: 認証メカニズムの組み合わせのサポート

Red Hat build of Quarkus 3.20 では、単一のリクエスト内で複数の認証メカニズムを使用するためのサポートが追加されました。相互 TLS (mTLS) や OpenID Connect (OIDC) ベアラートークン認証などのメカニズムを同じ認証フローで組み合わせることができるようになりました。

デフォルトでは、登録された認証メカニズムの 1 つによって最初の SecurityIdentity が生成されると、認証が完了します。すべてのメカニズムに認証情報の検証を要求するには、設定プロパティーを設定して包括的認証を有効にします。

この機能は、クライアント証明書へのアクセストークンのバインドが必要なシナリオなど、相互 TLS とベアラートークン認証を組み合わせる場合に役立ちます。

詳細と例は、「セキュリティーアーキテクチャー」ガイドの 認証メカニズムの組み合わせ セクションを参照してください。

1.3.6.2. 認可: @PermissionsAllowed を使用してカスタムセキュリティーアノテーションを作成する

Red Hat build of Quarkus 3.20 では、メタアノテーション内で @PermissionsAllowed を使用するためのサポートが追加され、より合理化されたアクセス制御管理のためのカスタムセキュリティーアノテーションを作成できるようになりました。

この機能拡張により、パーミッションベースの設定が簡素化され、セキュリティーコードの繰り返しが減少し、保守性が向上します。@PermissionsAllowed をカプセル化する再利用可能なセキュリティーアノテーションを定義できるようになりました。これにより、パーミッションの処理がより効率的かつ一貫したものになります。

詳細と例は、「Web エンドポイントの認可」ガイドの パーミッションメタアノテーションの作成 セクションを参照してください。

1.3.6.3. 認可: CDI Bean メソッドを使用して宣言的なパーミッションチェッカーを定義する

Red Hat build of Quarkus 3.20 以降、@PermissionChecker アノテーションを使用して、CDI Bean メソッドで宣言型パーミッションチェッカーを定義できます。この機能拡張により、パーミッションチェックをリソースクラスとは別に実装できるようになり、コードの重複が削減され、保守性が向上するため、柔軟で再利用可能な認可ロジックが実現します。

これらのパーミッションチェッカーは、文字列の等価性に基づいてパーミッション名を照合することにより、@PermissionsAllowed と連携して動作します。認証されたユーザーを表す SecurityIdentity と、受信した HTTP 要求パラメーターを評価することにより、汎用的な認可チェックをサポートします。このアプローチにより、きめ細かなアクセス制御が可能になります。チェッカーは、通常スコープまたはシングルトン CDI Bean で定義され、boolean または Uni<Boolean> のいずれかを返す必要があり、同期認可チェックとリアクティブ認可チェックの両方をサポートします。

この機能は、認可ロジックを一元化することでパーミッション管理を簡素化し、複数のエンドポイントにわたってセキュリティーポリシーをより簡単に適用できるようにします。開発者は、複数のアクションを動的に検証する汎用的なパーミッションチェッカーを作成できます。

詳細は、「Web エンドポイントの認可」ガイドの パーミッションチェッカーの作成 セクションを参照してください。

Red Hat build of Quarkus 3.20 以降では、quarkus-oidc を使用して、ファイルシステムから JWT ベアラートークンをロードすることで、OIDC プロバイダークライアントを認証するように OIDC を設定できます。

このアプローチにより、セキュアで自動化された認証が可能になります。これは、サービスアカウントトークンをファイルとしてマウントできる OpenShift などのコンテナー化された環境で特に役立ちます。Red Hat build of Quarkus はファイルからトークンを自動的に読み込み、トークンの有効期限が切れると再読み込みします。

設定の詳細と使用例は、次のリソースを参照してください。

  • 「OpenID Connect (OIDC) クライアントとトークンの伝播」ガイドの JWT ベアラー セクション。
  • 「OpenID Connect (OIDC) 認証」ガイドの OIDC プロバイダークライアント認証 セクションの「例: JWT ベアラートークンを使用してクライアントを認証する方法」。
1.3.6.5. OIDC: カスタム処理用に OIDC 応答をフィルタリングする

Red Hat build of Quarkus 3.20 では、次の Quarkus エクステンションによって OpenID Connect (OIDC) 応答フィルターが導入されています。

  • OpenID Connect (quarkus-oidc)
  • OpenID Connect Client (quarkus-oidc-client)

ロギングやその他のアクションのために、応答ステータス、ヘッダー、本文を検査するには、OidcResponseFilter を実装します。

デフォルトでは、OIDC 応答フィルターはグローバルに適用されます。トークンエンドポイントなどの特定のエンドポイントをターゲットにするには、@OidcEndpoint アノテーションを使用します。

詳細は、「OpenID Connect (OIDC) 認証」ガイドの OIDC 応答フィルター セクションを参照してください。

1.3.6.6. OIDC: mTLS バインドアクセストークン

相互 TLS (mTLS) トークンバインディングは、アクセストークンがクライアントの mTLS 認証証明書に暗号的にバインドされるようにして、セキュリティーを強化します。

この機能は RFC 8705 に基づいており、認証に使用される証明書の拇印がトークンに含まれる証明書の拇印と一致することを確認することで、盗まれたベアラーアクセストークンを受け入れるリスクを最小限に抑えます。

Red Hat build of Quarkus 3.20 以降、Quarkus OIDC エクステンション quarkus-oidc は、OpenID Connect (OIDC) と mTLS の両方で保護されたエンドポイントの証明書にバインドされたアクセストークンをサポートするようになりました。

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

quarkus.oidc.token.binding.certificate=true

詳細は、「OpenID Connect (OIDC) 認証」ガイドの 相互 TLS トークンバインディング セクションを参照してください。

1.3.6.7. OIDC: OidcProviderClient の注入とトークンの失効

Red Hat build of Quarkus 3.20 では、OidcProviderClient の注入のサポートが導入され、アプリケーションが OpenID Connect (OIDC) プロバイダーの UserInfo、トークンイントロスペクション、および失効エンドポイントと対話できるようになりました。

これにより、開発者は必要に応じてプログラムで UserInfo、トークンイントロスペクション、および失効エンドポイントにアクセスできるようになります。たとえば、ユーザーがログアウトした後にアクセストークンを取り消すことができます。

詳細は、OpenID Connect (OIDC) 認証ガイドの トークンの失効 セクションを参照してください。

1.3.6.8. OIDC: プログラムによる OIDC テナントの作成

Red Hat build of Quarkus 3.20 以降、quarkus-oidc を使用すると、application.properties ファイルで設定する代わりに、OidcTenantConfig ビルダーを使用して OpenID Connect (OIDC) テナントをプログラムで定義できます。

このアプローチは、設定で OIDC テナントを定義するよりも柔軟性が高くなります。

このアプローチは、発行者ベースやパスベースのテナントリゾルバーなど、静的テナントを必要とする機能に特に役立ちます。

詳細は、「OpenID Connect (OIDC) 認証」ガイドの次のリソースを参照してください。

1.3.6.9. OIDC クライアント: Dev Services for Keycloak で OIDC エクステンションが不要に

Red Hat build of Quarkus 3.20 では、quarkus-oidc エクステンションが存在しない場合でも、Dev Services for Keycloak を起動できるようになりました。この変更により、完全な OIDC エクステンションを必要とせずに、quarkus-oidc-client エクステンションを単独でテストできるようになります。

さらに、Dev Services for Keycloak が有効になっている場合、Red Hat build of Quarkus では次のような主要な OIDC クライアントプロパティーが自動的に設定されるようになりました。

  • quarkus.oidc-client.auth-server-url
  • quarkus.oidc-client.client-id
  • quarkus.oidc-client.credentials.secret

以前は、これらのプロパティーを手動で設定する必要がありました。

これらの機能拡張は下位互換性があります。既存のワークフローと手動設定は、引き続き期待どおりに機能します。

1.3.6.10. TLS レジストリー: 期限切れまたはまだ有効でない証明書のポリシー設定

Red Hat build of Quarkus 3.20 では、証明書チェーン全体での TLS ハンドシェイク中に期限切れまたはまだ有効でない証明書を処理するためのポリシーの設定がサポートされるようになりました。

以前は、トラストストアは RFC 3280 および関連仕様に準拠し、警告なしでこのような証明書を許可していました。

この更新により、ユーザーは次のいずれかのオプションを選択して動作を制御できるようになります。

  • IGNORE: 以前の動作を維持し、期限切れまたはまだ有効でない証明書を警告なしで許可します。
  • 警告: このような証明書が検出されると警告を記録します (新しいデフォルト)。
  • REJECT: そのような証明書が存在する場合はハンドシェイクを拒否します。
1.3.6.11. OIDC: Demonstrating Proof of Possession のサポート

Red Hat build of Quarkus 3.20 では、quarkus-oidc エクステンションがアクセストークンの Demonstrating Proof of Possession (DPoP) をサポートするようになりました。

この機能は テクノロジープレビュー として利用できます。

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

1.3.6.12. TLS レジストリー: PEM キーストア内の暗号化された PKCS#8 秘密鍵が導入される

Red Hat build of Quarkus 3.20 では、quarkus-tls-registry エクステンションにより、PEM キーストア内の暗号化された PKCS#8 秘密鍵のサポートが導入されています。

この機能は テクノロジープレビュー として利用できます。

これにより、開発者は AES-128-CBC 暗号化を使用して秘密鍵を保護し、アプリケーションのセキュリティーを向上させることができます。

この機能を使用するには、quarkus.tls.key-store.pem.password プロパティーにキーストアのパスワードを設定します。

詳細は、TLS レジストリーを使用したセキュリティーキーと証明書の管理 ガイドを参照してください。

1.3.7. ツール

Red Hat build of Quarkus 3.20 では、エクステンションの作成者は開発モードで実行されているアプリケーションの JVM オプションを定義できます。--enable-preview--add-opens などのオプションをエクステンションメタデータで直接指定できるため、アプリケーション開発者がこれらを設定する必要がなくなります。

エクステンションは、開発モードで実行するときにこれらの JVM オプションを自動的に適用し、すべてのアプリケーション開発者の環境を一貫したものにします。

アプリケーション開発者は、Quarkus Maven プラグインを使用して、エクステンションが提供するすべての JVM オプションをオフにしたり、特定のエクステンションのオプションを選択的にオフにしたりできます。詳細は、Quarkus ガイド「Quarkus と Maven」の エクステンションが提供する開発モード Java オプション セクションを参照してください。

1.3.8. Web

1.3.8.1. Dev UI: HTTP アクセスログが Dev UI に追加される

Red Hat build of Quarkus 3.20 以降、Dev UI フッターに HTTP タブが含まれるようになりました。これを使用して、ツールやコンテキストを切り替えることなく、受信 HTTP アクセスログメッセージを監視できます。

たとえば、Dev UI の SmallRye OpenAPI - Swagger UI ページを使用してアプリケーションの HTTP エンドポイントと対話する場合、Dev UI フッターの HTTP タブに、対応するログメッセージが表示されます。

詳細は、Quarkus ガイド「HTTP リファレンス」の HTTP アクセスログの設定 セクションを参照してください。

1.3.8.2. REST: REST パラメーターとしての Java レコード

Red Hat build of Quarkus 3.20 では、REST エンドポイントパラメーターコンテナーとして Java レコードのサポートが導入され、簡潔で不変のデータ構造が可能になります。レコードはクエリー、Cookie、ヘッダー、フォーム、またはマルチパートパラメーターをカプセル化できるため、RESTful サービスでのデータ処理が簡素化されます。

Java レコードはすでに、REST 本文の JSON シリアル化とデシリアル化に使用できます。ただし、Jakarta REST 仕様の制限により、@BeanParam はまだこれらをサポートしていません。

1.3.8.3. REST と RESTEasy: @AuthorizationPolicy アノテーションが導入される

Red Hat build of Quarkus 3.20 では、quarkus-rest および quarkus-resteasy エクステンションにより、新しい @AuthorizationPolicy アノテーションのサポートが追加されました。このアノテーションを使用すると、名前付きの HttpSecurityPolicy を Jakarta REST エンドポイントに直接バインドできます。この機能は、パス一致ルールの代替手段を提供し、SecurityIdentity ロールを変更せずに、より柔軟な認可チェックを可能にします。

詳細は、「Web エンドポイントの認可」ガイドの カスタム HttpSecurityPolicy セクションを参照してください。

1.3.8.4. REST Client: @Url アノテーションを使用した呼び出しごとの動的な URL

Red Hat build of Quarkus 3.20 では、quarkus-rest-client エクステンションによって @Url アノテーションのサポートが追加されました。REST クライアントメソッドのパラメーターにアノテーションを付けて、ランタイムに URL を動的に提供できるようになりました。

通常、REST クライアントには、グローバルに設定されたベース URL が必要です。ただし、呼び出しごとに URL を設定する必要がある場合もあります。@Url アノテーションは、個々の呼び出しに対して動的な URL 解決を有効にすることで、このユースケースをサポートします。

詳細は、Quarkus ガイド「REST Client の使用」の 動的ベース URL セクションを参照してください。

1.3.8.5. REST Client: MicroProfile REST Client がバージョン 4.0 に更新される

Red Hat build of Quarkus 3.20 では、quarkus-rest-client エクステンションが MicroProfile REST Client 4.0 に更新されました。この更新では、REST クライアントを作成および管理するための標準化された宣言型 API を提供することで、アプリケーションが RESTful サービスと対話する方法が強化されます。柔軟性、パフォーマンス、セキュリティーが向上し、外部 REST サービスの統合が簡素化されます。

1.3.8.6. REST Jackson: リフレクションフリーのデシリアライゼーションによる JSON 処理の改善

Red Hat build of Quarkus 3.20 では、quarkus-rest-jackson エクステンションにより、リフレクションフリーのデシリアライゼーションが導入され、JSON 処理機能が強化されます。

この機能拡張は、以前のリリースで実装されたリフレクションフリーのシリアル化を補完します。

デフォルトでは、リフレクションフリーの JSON 処理は無効になっています。有効にするには、次の設定プロパティーを true に設定します。

quarkus.rest.jackson.optimization.enable-reflection-free-serializers=true

デシリアライズ中にリフレクションへの依存を排除することで、アプリケーションはパフォーマンスを向上させ、メモリー消費を削減できます。特に、リフレクションによってオーバーヘッドが生じる可能性があるネイティブアプリケーションではその効果が顕著です。この機能を有効にする場合は、テストを実行してアプリケーションへの影響を評価します。

詳細は、Quarkus ガイド「Quarkus REST を使用した REST サービスの作成」の JSON シリアル化 セクションを参照してください。

1.3.8.7. WebSockets Next エクステンションが導入される

Red Hat build of Quarkus 3.20 では、WebSocket サーバーおよびクライアントエンドポイントを定義するための最新の宣言型 API を提供する quarkus-websockets-next エクステンションのサポートが導入されています。

このエクステンションにより、効率的でスケーラブルなリアルタイム通信が可能になり、Red Hat build of Quarkus のリアクティブアーキテクチャーおよびネットワークレイヤーと統合されます。

非推奨の quarkus-websockets エクステンションとは異なり、WebSockets Next は Jakarta WebSocket 仕様を実装していません。

WebSockets Next によって導入された主な機能:

セキュリティー統合の改善

WebSockets Next は、Quarkus Security およびアイデンティティープロバイダーとのシームレスな統合をサポートします。各 WebSocket 接続は SecurityIdentity に関連付けられており、HTTP アップグレードプロセス中の早期認可が可能になります。開発者は、標準のセキュリティーアノテーションまたはパーミッションチェッカーを使用して、エンドポイントを保護できます。カスタムヘッダーをサポートするクライアントの場合、ベアラートークン認証が完全にサポートされます。カスタム認証ヘッダーを設定できない JavaScript クライアントは、回避策として Sec-WebSocket-Protocol ヘッダーを使用してトークンを渡すことができます。さらに、Red Hat build of Quarkus は OIDC トークンの有効期限が切れると、WebSocket 接続を自動的に閉じます。

詳細は、「WebSockets Next リファレンス」ガイドの セキュリティー セクションを参照してください。

構造化メッセージ処理

エクステンションは、組み込みの JSON シリアル化とデシリアル化をサポートします。StringJsonObjectJsonArrayBufferbyte[] などの一般的な型は変換されずに送信されます。カスタムコーデックを提供して、メッセージをシリアライズまたはデシリアライズする方法をカスタマイズできます。

詳細は、シリアル化とデシリアル化 セクションを参照してください。

可観測性の統合

WebSockets Next は OpenTelemetry と Micrometer の両方と統合して、可観測性を強化します。OpenTelemetry エクステンションが存在する場合、開かれた WebSocket 接続と閉じられた WebSocket 接続のトレースを自動的にキャプチャーし、それらを初期ハンドシェイクスパンにリンクします。Micrometer サポートが有効になっている場合、WebSockets Next は WebSocket アクティビティーのメトリクスを収集します。

設定の詳細は、「WebSockets Next リファレンス」ガイドの テレメトリー セクションを参照してください。

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

1.4. サポートおよび互換性

Red Hat build of Quarkus 3.20 と互換性のあるサポートされる構成とアーティファクトの詳細、およびサポートライフサイクルポリシーの概要は、次の Red Hat カスタマーサポートポータルで参照できます。

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

Red Hat build of Quarkus では、機能リリースはメジャーリリースまたはマイナーリリースのいずれかになります。

  • メジャーリリースでは、新しい機能が導入され、最低 3 年間のサポートライフサイクル (フルサポートとメンテナンスサポート) が適用されます。
  • マイナーリリースでは、以前のリリースとの互換性に影響を与えない新しい機能や変更 (重大な変更) が導入されます。最新のマイナーバージョンは完全にサポートされ、新しいマイナーバージョンがリリースされてから 6 カ月間、以前のバージョンはメンテナンスサポートの対象となります。

詳細は、Red Hat ライフサイクルおよびサポートポリシー を参照してください。

Red Hat build of Quarkus リリースのバージョン番号は、Quarkus コミュニティープロジェクト の長期サポート (LTS) バージョンと直接一致しています。詳細は、ブログ記事 Long-Term Support (LTS) for Quarkus を参照してください。

Red Hat build of Quarkus 機能リリースのバージョン番号は、ベースとなる Quarkus コミュニティーのバージョンと一致します。

重要

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

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

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

図 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 を最新リリースにアップグレードする前に、必ずリリースノートの 以前のバージョンとの互換性に影響を与える変更 および 非推奨のコンポーネントおよび機能 のセクションを確認してください。

Red Hat build of Quarkus の製品ライフサイクル、タイムライン、サポートポリシーの詳細は、Red Hat カスタマーポータルにログインし、ナレッジベースの記事である Red Hat build of Quarkus のライフサイクルとサポートポリシー を参照してください。

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

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

サポートされる構成のリストは、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.20 で非推奨となりました。これらはこのリリースに含まれており、サポートされています。ただし、これらのコンポーネントと機能は拡張されず、今後削除される可能性があります。

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

1.5.1. 従来の設定クラスが非推奨に

Red Hat build of Quarkus 3.20 では、@ConfigRoot@ConfigItem に基づくレガシー設定クラスは非推奨になりました。この非推奨化は、より一貫性がありタイプセーフな設定モデルを提供する @ConfigMapping フレームワークへの移行に備えるためのものです。

既存の設定クラスの互換性レイヤーはこのリリースでは引き続き利用可能ですが、今後のバージョンでは削除される予定です。

長期的な互換性を確保するために、開発者には、コードを更新して @ConfigMapping インターフェイスを使用することを推奨します。

詳細は、JIRA issue QDOCS-1150 を参照してください。

1.5.2. quarkus.http.cors プロパティーが非推奨に

Red Hat build of Quarkus 3.20 では、quarkus.http.cors 設定プロパティーは非推奨になりました。Cross-Origin Resource Sharing (CORS) を有効にするには、代わりに quarkus.http.cors.enabled プロパティーを使用します。

  • 次のように設定を更新します。

    quarkus.http.cors.enabled=true

    この変更は、YAML 設定との互換性を向上させるために導入されました。以前の構造では、ルートキーに値を割り当てるために ~ などの特殊な構文を使用する必要がありました。そのため、設定で混乱やエラーが発生しやすくなっていました。

詳細は、Cross-Origin Resource Sharing (CORS) ガイド を参照してください。

1.5.3. quarkus.log.*.json プロパティーが非推奨に

Red Hat build of Quarkus 3.20 では、quarkus.log.*.json 設定プロパティーが非推奨になりました。ロギングで JSON 形式を有効にするには、代わりに quarkus.log.*.json.enabled プロパティーを使用します。

  • 次のように設定を更新します。

    quarkus.log.console.json.enabled=true

この変更は、YAML 設定との互換性を向上させるために導入されました。以前の構造では、ルートキーに値を割り当てるために ~ などの特殊な構文を使用する必要がありました。そのため、設定で混乱やエラーが発生しやすくなっていました。

詳細は、Migration Guide 3.19 を参照してください。

1.5.4. SmallRye Fault Tolerance バージョン 6.7.0 で第一世代のプログラム API が非推奨に

Red Hat build of Quarkus 3.20 では、quarkus-smallrye-fault-tolerance エクステンションに SmallRye Fault Tolerance 6.7.0 が組み込まれています。これにより、互換性を失わせる変更点は導入されませんが、次の更新が導入されます。

  • プログラム API の最初のバージョン (FaultTolerance@ApplyFaultTolerance) は、非推奨になりました。SmallRye Fault Tolerance 7.0 で削除される予定です。2 番目のバージョン (GuardTypedGuard@ApplyGuard) が代わりとして機能しますが、大きな違いがあります。
  • 仕様によって定義された設定プロパティーは引き続き使用できます。ただし、Red Hat build of Quarkus では、代わりに使用できるネイティブ設定プロパティーが提供されるようになりました。

詳細は、SmallRye Fault Tolerance 6.7.0 のリリース告知を参照してください。これには、プログラム API の移行ガイドへのリンクと、新しい設定プロパティーの詳細が記載されています。Quarkus ガイド SmallRye のフォールトトレランス には、これらの設定プロパティーの詳細なリファレンスが記載されています。

1.5.5. WebSocket および WebSocket クライアントエクステンションが非推奨に

Red Hat build of Quarkus 3.20 では、Jakarta WebSocket 仕様を実装する quarkus-websockets および quarkus-websockets-client エクステンションが非推奨になりました。

Red Hat build of Quarkus は、今後のリリースでこれらのエクステンションのサポートを停止する予定です。

今後のバージョンとの互換性を確保するには、Quarkus WebSockets Next エクステンション (quarkus-websockets-next) に移行してください。このエクステンションは、より効率的な最新の WebSocket API を提供します。

詳細は、次の Quarkus リソースを参照してください。

この変更には手動による介入が必要です。これは、Red Hat build of Quarkus 3.20 へのアプリケーションの移行 ガイドで説明されている自動更新プロセスには含まれていません。

1.6. テクノロジープレビュー

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

重要

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

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

1.6.1. 新しいテクノロジープレビュー機能

Red Hat build of Quarkus 3.20 では、次のテクノロジープレビュー機能が導入されています。

1.6.2. 継続中のテクノロジープレビュー機能

Red Hat build of Quarkus 3.20 は、Red Hat build of Quarkus 3.15 で導入された次のテクノロジープレビュー機能を引き続き提供します。

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

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

これらの重大な変更を確認し、アプリケーションを Red Hat build of Quarkus 3.20 に更新した後もアプリケーションが引き続き機能するように必要な手順を実行してください。

アプリケーションプロジェクトを Red Hat build of Quarkus 3.20 に更新するには、アプリケーションを Red Hat build of Quarkus 3.20 に移行する ガイドを参照してください。

1.7.1. クラウド

1.7.1.1. OpenShift および Kubernetes: バージョン 7.1 への Fabric8 Kubernetes Client のアップグレード

Red Hat build of Quarkus 3.20 では、次のエクステンションによって Fabric8 Kubernetes Client がバージョン 6.13 から 7.1 にアップグレードされます。

  • quarkus-openshift
  • quarkus-openshift-client
  • quarkus-kubernetes
  • quarkus-kubernetes-client

互換性を失わせる変更点

アップグレードされた Fabric8 Kubernetes クライアントには、quarkus-kubernetes-client および quarkus-openshift-client エクステンションに影響する、互換性を失わせる変更点が含まれています。

quarkus-openshift および quarkus-kubernetes エクステンションは、Fabric8 を使用しますが、機能は変更されていないため、更新する必要はありません。

このアップグレードの一環として、io.quarkus:quarkus-test-openshift-client モジュールが削除されました。テストでこのモジュールを使用する場合は、同等の機能を提供する io.quarkus:quarkus-test-kubernetes-client に移行してください。詳細は、Quarkus ガイド「Kubernetes Client」の OpenShift Client セクションを参照してください。

アップグレードされた Fabric8 Kubernetes Client では、一部のモデルタイプとクラスが再編成されています。一部は別のモジュールに移動されました。新しい場所を確認するには、Fabric8 公式の Kubernetes Client: Migration from 6.x to 7.x ガイドを参照してください。

影響を受ける依存関係、設定、または API の使用状況をアプリケーションで確認し、必要に応じて更新してください。その後、アプリケーションを十分にテストして、Fabric8 7.1 との完全な互換性を確保します。

注記

Red Hat build of Quarkus 3.20 では、quarkus-kubernetes エクステンションは開発者プレビューとしてサポートされており、quarkus-kubernetes-client エクステンションは現在サポートされていません。これらのエクステンションを使用すると、前述の変更点が移行に影響する可能性があります。

この変更には手動による介入が必要です。これは、Red Hat build of Quarkus 3.20 へのアプリケーションの移行 ガイドで説明されている自動更新プロセスには含まれていません。

1.7.2. 互換性

1.7.2.1. Reactive 名前変更の互換性レイヤーの削除

Red Hat build of Quarkus 3.15 で、RESTEasy Reactive から Quarkus REST へ、Reactive Messaging から Quarkus Messaging へブランド変更の一環として、多くのエクステンションと設定プロパティーの名前が変更されました。この変更に対応するために、アーティファクトの再配置と設定のフォールバックが導入されました。

Red Hat build of Quarkus 3.20 では、このアーティファクトの再配置と設定のフォールバックが削除されました。新しいアーティファクト名と設定プロパティーを使用する必要があります。

関連する背景情報は、「Red Hat build of Quarkus 3.15 のリリースノート」ガイドの RESTEasy Reactive エクステンションの名前が Quarkus REST に変更される セクションを参照してください。

1.7.3. コア

1.7.3.1. デフォルトのロケール設定の強化

Red Hat build of Quarkus 3.20 では、Mandrel バージョン 24.2 以降に合わせてロケール処理が更新されています。

互換性を失わせる変更点

以前のリリースでは、アプリケーションがビルドシステムからデフォルトのロケールを継承していました。

すべてのアプリケーションで一貫したロケールの動作を確保するために、Red Hat build of Quarkus は標準化されたデフォルトのロケールストラテジーを適用します。次の表を使用して、ロケール設定に応じてアプリケーションの動作がどのように変化するかを確認してください。

Expand
アプリケーションのプロパティーネイティブ実行可能ファイルに含まれるロケール実行時のデフォルトロケール

quarkus.localesquarkus.default-locale も設定されていない

en_US

en_US

quarkus.locales のみが設定されている

quarkus.locales にリストされているロケールおよび en_US

en_US

quarkus.default-locale のみが設定されている

en_US

quarkus.default-locale の値

quarkus.localesquarkus.default-locale の両方が設定されている

quarkus.locales にリストされているロケールおよび en_US

quarkus.default-locale の値

quarkus.locales の設定に関係なく、en_US ロケールは常にネイティブ実行可能ファイルに埋め込まれます。

注記

quarkus.default-locale を設定すると、Red Hat build of Quarkus が実行時に user.language および user.country システムプロパティーを設定します。GraalVM または Mandrel を使用する JDK 24 以降では、これらのプロパティーを直接オーバーライドすることもできます。

予期しない動作の変更を回避するために、設定プロパティーでアプリケーションのロケール設定を確認し、必要に応じて設定を更新してください。

この変更には手動による介入が必要です。これは、Red Hat build of Quarkus 3.20 へのアプリケーションの移行 ガイドで説明されている自動更新プロセスには含まれていません。

1.7.3.2. SmallRye Fault Tolerance: Fallback および BeforeRetry メソッドがビルド時に定義される

Red Hat build of Quarkus 3.20 では、@Fallback.fallbackMethod() および @BeforeRetry.methodName() の設定プロパティーがビルド時に解決され、ランタイムに変更できなくなりました。影響を受ける設定プロパティーは次のとおりです。

  • <class_name>/<method_name>/Fallback/fallbackMethod
  • <class_name>/Fallback/fallbackMethod
  • Fallback/fallbackMethod
  • <class_name>/<method_name>/BeforeRetry/methodName
  • <class_name>/BeforeRetry/methodName
  • BeforeRetry/methodName

この変更により、適切なリフレクション設定とネイティブイメージコンパイルとの互換性が確保されます。

1.7.3.3. SmallRye Fault Tolerance バージョン 6.7.0 で第一世代のプログラム API が非推奨に

Red Hat build of Quarkus 3.20 では、quarkus-smallrye-fault-tolerance エクステンションに SmallRye Fault Tolerance 6.7.0 が組み込まれています。これにより、互換性を失わせる変更点は導入されませんが、次の更新が導入されます。

  • プログラム API の最初のバージョン (FaultTolerance@ApplyFaultTolerance) は、非推奨になりました。SmallRye Fault Tolerance 7.0 で削除される予定です。2 番目のバージョン (GuardTypedGuard@ApplyGuard) が代わりとして機能しますが、大きな違いがあります。
  • 仕様によって定義された設定プロパティーは引き続き使用できます。ただし、Red Hat build of Quarkus では、代わりに使用できるネイティブ設定プロパティーが提供されるようになりました。

詳細は、SmallRye Fault Tolerance 6.7.0 のリリース告知を参照してください。これには、プログラム API の移行ガイドへのリンクと、新しい設定プロパティーの詳細が記載されています。Quarkus ガイド SmallRye のフォールトトレランス には、これらの設定プロパティーの詳細なリファレンスが記載されています。

1.7.3.4. スケジューラーメソッドで、起動されたスケジューラーが必須になる

Red Hat build of Quarkus 3.20 以降、io.quarkus.scheduler.Scheduler 内のメソッドの動作が変更されました。

スケジューラーが起動していない場合、ほぼすべてのメソッドが UnsupportedOperationException を出力するようになりました。

スケジューラーが実行中かどうかを確認するには、新しいメソッド Scheduler#isStarted() を使用できます。

この変更は、quarkus-scheduler および quarkus-quartz エクステンションに基づくスケジューラーインスタンスに影響します。

Red Hat build of Quarkus 3.20 以降、開発モードおよびテストモードを使用する場合、管理インターフェイスがデフォルトで 0.0.0.0 ではなく localhost インターフェイスでリッスンします。この変更により、メインインターフェイスの動作と同じになりました。

Windows Subsystem for Linux (WSL) を搭載した Windows では、管理インターフェイスもメインインターフェイスも、引き続き 0.0.0.0 でリッスンします。

詳細は、Quarkus の Management interface reference ガイドを参照してください。

1.7.3.6. @ConfigMapping への移行と設定クラスの非推奨化

Red Hat build of Quarkus 3.20 では、設定が @ConfigMapping フレームワークに移行されました。この変更により、従来の設定クラスが非推奨になり、インターフェイスとメソッドシグネチャーに基づく統合設定モデルが導入されました。

一般的に使用される特定の設定クラスは、互換性レイヤーが残っています。ただし、このレイヤーは今後のリリースで削除される予定です。

1.7.3.7. ビルダーおよびランタイムベースイメージが UBI 9 にアップグレードされる

Red Hat build of Quarkus 3.20 以降、Red Hat のビルダーおよびランタイムベースイメージが、Red Hat Universal Base Image 9 (UBI 9) を使用するようにアップグレードされます。

UBI 8 から UBI 9 にアップグレードする場合、システム依存関係、ネイティブイメージビルド、またはパッケージおよび GNU C ライブラリー (glibc) バージョンの更新による変更が、アプリケーションの動作やランタイム環境に影響する可能性があることに注意してください。必要に応じて設定を確認して更新してください。

UBI 9 で問題が発生した場合は、手動で UBI 8 に戻すことができます。

Expand
表1.3 UBI 8 への切り替え
イメージアクション

ビルダーイメージ

次のようにビルダーイメージを手動で設定します。

  • -Dquarkus.native.container-build=true
  • registry.access.redhat.com/quarkus/mandrel-for-jdk-21-rhel8:23.1

ランタイムイメージ

モードに応じて、次の設定を適用します。

  • JVM モード:

    • src/main/docker/ ディレクトリーの Dockerfile で、コンテナーのベースイメージとして registry.access.redhat.com/ubi8/openjdk-21 を指定します。
  • ネイティブモード:

    • UBI 最小イメージを使用するには、registry.access.redhat.com/ubi8/ubi-minimal:8.10 を指定します。

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

1.7.4. データ

1.7.4.1. データソース: リアクティブ SQL データソースの暗黙的なデフォルト URL の削除

Red Hat build of Quarkus の以前のバージョンでは、Dev Services が無効になっているか実稼働モードで実行されている場合、quarkus.datasource.reactive.url および quarkus.datasource.<datasource-name>.reactive.url プロパティーが、ドキュメント化されていないデフォルト値に暗黙的に設定され、データベース固有のポートを使用する localhost をターゲットとしていました。

Red Hat build of Quarkus 3.20 以降、Dev Services が無効になっている場合、またはアプリケーションが本番モードで実行されている場合、これらのプロパティーにデフォルト値が設定されなくなりました。プロパティーが設定されていない場合、対応するデータソースが非アクティブ化されます。非アクティブ化されたデータソースをアプリケーションが使用しようとすると、起動時にデータソースが失敗します。詳細は、リリースノート データソースが非アクティブ化されているか、URL が設定されていない場合、データソースの使用がすぐに失敗する を参照してください。

アプリケーションにアクティブなデータソースが必要で、それを localhost 上のデータベースに接続する場合は、quarkus.datasource.reactive.url または quarkus.datasource.<datasource-name>.reactive.url プロパティーを明示的に設定する必要があります。以下に例を示します。

quarkus.datasource.reactive.url=postgresql://localhost:5432/mydatabase

以前のバージョンでは、この設定は暗黙的に指定されていました。このリリース以降、データソースをアクティブ化するには、URL を定義する必要があります。

1.7.4.2. URL のないデータソースがヘルスチェックに影響しなくなる

以前は、Dev Services が無効になっているか本番モードの場合、quarkus.datasource.jdbc.urlquarkus.datasource.<datasource-name>.jdbc.urlquarkus.datasource.reactive.url、または quarkus.datasource.<datasource-name>.reactive.url プロパティーが設定されていない場合でも、Red Hat build of Quarkus がデータソースのヘルスチェックを実行していました。これにより、JDBC データソースでは常に成功し、リアクティブデータソースではほぼ常に失敗していたため、ヘルスチェックの信頼性が低下していました。

Red Hat build of Quarkus 3.20 以降、URL のないデータソースはヘルスチェックに影響しなくなりました。ヘルスチェックを確実に利用可能にするには、quarkus.datasource.jdbc.urlquarkus.datasource.<datasource-name>.jdbc.urlquarkus.datasource.reactive.url、または quarkus.datasource.<datasource-name>.reactive.url プロパティーを明示的に設定します。

Red Hat build of Quarkus 3.20 では、データソースが quarkus.datasource.active=false で非アクティブ化されている場合や URL が欠落している場合でも、アプリケーションが正常に起動します。この動作により、特に Dev Services が無効になっている場合や本番モードになっている場合に、データソースに初めてアクセスしたときにランタイムエラーが発生することがよくあります。

この更新により、データソースが使用されているものの、非アクティブ化されているか URL が欠落していることを Red Hat build of Quarkus が検出した場合、アプリケーションの起動が失敗するようになりました。

Red Hat build of Quarkus は、これらの問題を早期に検出するために、以下のように、より厳格な検証を起動時に実施するようになりました。

  • 静的な CDI 注入: @Inject DataSource または @Inject Pool を使用してデータソースが静的に注入されると、アプリケーションの起動が失敗し、実用的で明確なエラーメッセージが表示されます。
  • 動的な取得: Arc.container().instance()@Inject Instance<DataSource> などを使用して動的に取得されたデータソースは、起動時に検出されません。ただし、ランタイムにこれらの Bean を取得すると、実用的なガイダンスを含む明示的な例外が出力されます。

これと同じ検証が、Flyway および Liquibase エクステンションの Flyway および LiquibaseFactory CDI Bean にも適用されます。

注記

Red Hat build of Quarkus 3.20 は、現在 Flyway および Liquibase エクステンションをサポートしていません。これらのエクステンションを使用すると、前述の変更点が移行に影響する可能性があります。

アプリケーションへの影響

  • アプリケーションで、非アクティブ化されているか URL がない可能性のあるデータソース、Flyway、または LiquibaseFactory Bean を使用している場合、次のような起動エラーが発生する可能性があります。

    io.quarkus.arc.InactiveBeanException: Bean is not active: SYNTHETIC bean [class=io.agroal.api.AgroalDataSource, id=sqqLi56D50iCdXmOjyjPSAxbLu0]
    Reason: Datasource' <default>' was deactivated automatically because its URL was not set.
  • データソースをアクティブ化するには、設定プロパティー quarkus.datasource.jdbc.url を設定します。

    詳細は、データソースの設定 ガイドを参照してください。

データソースをアクティブにする必要がある場合の解決方法

必要なすべての設定プロパティーが指定されていることを確認します。

  1. quarkus.datasource.jdbc.url またはデータソースタイプに適した設定を指定して、データソースが適切にアクティブ化されるようにします。

データソースが非アクティブである可能性がある場合の解決方法

非アクティブなデータソースを適切に処理できるようにコードまたは設定を調整します。

  1. 使用されていないエクステンションを非アクティブ化する: アクティブでない可能性のあるデータソースにエクステンションが依存している場合は、active 設定プロパティーを false に設定して、エクステンションを明示的に非アクティブ化します。以下に例を示します。

    • quarkus.hibernate-search-standalone.active=false
    • quarkus.hibernate-search-orm.active=false
    • quarkus.hibernate-orm.active=false
    • quarkus.flyway.active=false
    • quarkus.datasource.active=false
  2. 動的に注入する: 静的な CDI 注入を使用する代わりに、@Inject InjectableInstance<DataSource> を使用してデータソース Bean がアクティブかどうかを確認してから、データソース Bean を使用します。

    if (ds.getHandle().getBean().isActive()) {
    DataSource dataSource = ds.get();
    // Use the datasource
    }

    これらの変更により、誤って設定されたデータソースを早期に検出し、予期しないランタイムエラーを防ぐことで、アプリケーションの信頼性が向上します。

1.7.4.4. Flyway バージョン 11 により cleanOnValidationError が削除される

Red Hat build of Quarkus 3.20 では、quarkus-flyway エクステンションによって Flyway がバージョン 11 にアップグレードされます。これにより、cleanOnValidationError 設定パラメーターが削除されます。さらに、Flyway.validate() を呼び出しても検証エラーがクリーンアップされなくなりました。

この変更を緩和するために、Red Hat build of Quarkus 3.20 では、quarkus.flyway.validate-at-start.clean-on-validation-error 設定プロパティーが導入されました。これは cleanOnValidationError と同様の動作を提供するものですが、アプリケーションの起動時にのみ適用されます。

回避策: Flyway.validate() への明示的な呼び出しで cleanOnValidationError の以前の動作が必要な場合は、アプリケーションで検証エラーをキャッチし、Flyway.clean() を使用してデータベースのクリーンアップを明示的にトリガーすることを検討してください。

注記

Red Hat build of Quarkus 3.20 は、現在 Flyway エクステンションをサポートしていません。このエクステンションを使用すると、前述の変更点が移行に影響する可能性があります。

この変更には手動による介入が必要です。これは、Red Hat build of Quarkus 3.20 へのアプリケーションの移行 ガイドで説明されている自動更新プロセスには含まれていません。

詳細は、Quarkus ガイド Using Flyway を参照してください。

1.7.4.5. IBM Db2 ドライバーとコンテナーイメージがバージョン 12 にアップグレードされる

Red Hat build of Quarkus 3.20 では、Dev Services が使用する IBM Db2 ドライバーとコンテナーイメージがバージョン 12 にアップグレードされました。

IBM Db2 ドライバーとコンテナーイメージは、Red Hat build of Quarkus 3.20 へのアプリケーションの移行 ガイドで説明されている自動更新により、バージョン 12 にアップグレードされます。

互換性を失わせる変更点

このアップグレードでは、ライセンス登録プロセスと接続設定に、互換性を失わせる変更が導入されます。

Db2 Connect 12.1 にアップグレードする場合は、IBM の Features with behavior changes when upgrading to the Db2 Connect 12.1 driver に記載されている新しいライセンス要件、設定手順、および SSL/TLS 設定を確認してください。

この変更には手動による介入が必要です。これは、Red Hat build of Quarkus 3.20 へのアプリケーションの移行 ガイドで説明されている自動更新プロセスには含まれていません。

1.7.4.6. Hibernate ORM の Bean Validation が DDL にデフォルトで影響する

Red Hat build of Quarkus 3.20 では、Hibernate ORM の Bean Validation 統合のデフォルト動作が変更されました。以前は、データ定義言語 (DDL) の生成時に検証制約が考慮されていませんでした。このリリースでは、Hibernate ORM がデフォルトで適用可能な検証制約を DDL に含めるようになりました。これにより、データベーススキーマとアプリケーションレベルの制約の整合性が向上します。

  • 以前の動作に戻し、検証制約が DDL の生成に影響を与えないようにするには、quarkus.hibernate-orm.validation.mode 設定プロパティーを callback に設定します。

    quarkus.hibernate-orm.validation.mode=callback

quarkus.hibernate-orm.validation.enabled プロパティーも非推奨になりました。

  • Bean Validation の統合を無効にするには、次の設定を使用します。

    quarkus.hibernate-orm.validation.mode=none

これらの変更の詳細とアプリケーションの移行に関するガイダンスは、Migration Guide 3.19 または次のリソースを参照してください。

1.7.5. ロギング

1.7.5.1. quarkus.log.*.json プロパティーが非推奨に

Red Hat build of Quarkus 3.20 では、quarkus.log.*.json 設定プロパティーが非推奨になりました。ロギングで JSON 形式を有効にするには、代わりに quarkus.log.*.json.enabled プロパティーを使用します。

  • 次のように設定を更新します。

    quarkus.log.console.json.enabled=true

この変更は、YAML 設定との互換性を向上させるために導入されました。以前の構造では、ルートキーに値を割り当てるために ~ などの特殊な構文を使用する必要がありました。そのため、設定で混乱やエラーが発生しやすくなっていました。

詳細は、Migration Guide 3.19 を参照してください。

1.7.6. 可観測性

1.7.6.1. OpenTelemetry: 開発中のデータベース値が移動される

Red Hat build of Quarkus 3.20 では、quarkus-opentelemetry エクステンションによって互換性を失わせる変更が導入されました。これは、開発中のデータベース値 (Redis に関連する値など) が別のパッケージに移動されたためです。

OpenTelemetry では、データベースのセマンティック規則がまだ安定していないため、変更のリストが保持されていません。

手動計装を使用する場合、この変更によって手動による介入が必要になる可能性があります。これは、Red Hat build of Quarkus 3.20 へのアプリケーションの移行 ガイドで説明されている自動更新プロセスには含まれていません。

1.7.6.2. SmallRye OpenTracing: エクステンションと関連する JDBC トレーシング設定が削除される

Red Hat build of Quarkus 3.20 では、以前非推奨になった quarkus-smallrye-opentracing エクステンションと、関連する設定プロパティー quarkus.datasource.jdbc.tracing が削除されました。

現在は、quarkus-opentelemetry エクステンションが推奨されるトレーシングソリューションです。OpenTelemetry で JDBC トレーシングを有効にするには、次の設定プロパティーを使用します。

quarkus.datasource.jdbc.telemetry=true

移行するには、OpenTracing エクステンションを OpenTelemetry に置き換え、それに応じて設定を更新します。

1.7.7. セキュリティー

1.7.7.1. OIDC クライアント: クライアントに URL がない場合の動作が変更される

Red Hat build of Quarkus 3.20 以降、quarkus-oidc-client エクステンションを使用する場合に、OpenID Connect (OIDC) クライアントが特定の URL を参照するように設定していないと、Dev Services for Keycloak が自動的に開発モードで起動します。

この動作を無効にするには、次のプロパティーを application.properties ファイルに追加します。

quarkus.keycloak.devservices.enabled=false
1.7.7.2. Security WebAuthn: WebAuthn4J を使用した再実装

Red Hat build of Quarkus 3.20 では、セキュリティーの強化、業界標準への準拠、長期的な保守性の向上のために、WebAuthn4J を使用して quarkus-security-webauthn エクステンションが再実装されました。

そのため、この更新は以前のバージョンのエクステンションと互換性がありません。

重要

このリリースノートは、quarkus-security-webauthn エクステンションのユーザー向けに提供されています。Red Hat build of Quarkus 3.20 はまだこのエクステンションをサポートしていませんが、この変更が移行に影響する可能性があることに注意してください。

新しい実装にスムーズに移行するために、次の情報を使用してください。

userName の変更

  • すべての userName の参照が username に置き換えられました。

Authenticator クラスの変更

  • Authenticator クラス (Vert.x からのもの) は使用されなくなり、機能的に WebAuthnCredentialRecord に置き換えられました。この新しいクラスは同様のデータを保持しますが、WebAuthn4J のサブタイプであるため、コンテンツにアクセスするために異なる方法が必要です。

    • WebAuthnCredentialRecord.getRequiredPersistedData() は、必要なすべての永続データを含む RequiredPersistedData レコードを返すため、ストレージ管理が簡素化されます。
    • static メソッドである WebAuthnCredentialRecord.fromRequiredPersistedData(RequiredPersistedData) は、保存されたデータから WebAuthnCredentialRecord を再構築します。
  • アプリケーションが JPA エンティティーまたはデータベーステーブルに Authenticator データを保存する場合は、新しい WebAuthnCredentialRecord フォーマットに移行する必要があります。問題が発生した場合は、プロジェクトのリポジトリーに報告してください。

WebAuthnUserProvider クラスの変更

  • findWebAuthnCredentialsByUserName()findByUsername() になりました。
  • findWebAuthnCredentialsByCredID()findByCredentialId() になりました。
  • updateOrStoreWebAuthnCredentials() が次のように分割されました。

    • update(String credentialId, long counter)
    • store(WebAuthnCredentialRecord credentialRecord)

デフォルトのエンドポイントの変更

  • /q/webauthn/login/q/webauthn/login-options-challenge になりました。
  • /q/webauthn/register/q/webauthn/register-options-challenge になりました。
  • /q/webauthn/callback が次のエンドポイントに分割されました。これらはセキュリティー上の理由からデフォルトでオフになっています。

    • /q/webauthn/login

      有効にするには、quarkus.webauthn.enable-login-endpoint プロパティーを設定します。

    • /q/webauthn/register

      有効にするには、quarkus.webauthn.enable-registration-endpoint プロパティーを設定します。

  • 新しい /q/webauthn/register エンドポイントには、username クエリーパラメーターが必要です。
  • 許可される関連オリジンのリストを返すために、/.well-known/webauthn が追加されました。
  • login および login-options-challenge のユーザー名が任意になりました。
  • /q/webauthn/login-options-challenge エンドポイントと /q/webauthn/register エンドポイントが、POST メソッドから GET メソッドに移行し、JSON ボディーではなくクエリーパラメーターとしてパラメーターを受け入れるようになりました。

WebAuthnSecurity クラスの変更

  • 次の 2 つのメソッドが追加されました。

    • getLoginOptionsChallenge()
    • getRegisterOptionsChallenge()
  • login() および loginOptionsChallenge()username パラメーターが任意になりました。
  • username の Cookie が削除されたため、register() メソッドで username パラメーターが必須になりました。

設定変更

  • quarkus.webauthn.require-resident-key (ブール値、デフォルト: false) が、quarkus.webauthn.resident-key (データ列挙、デフォルト: REQUIRED) に置き換えられました。
  • quarkus.webauthn.challenge-username-cookie-name 設定とそれに関連する Cookie が削除されました。
  • 次の新しい設定が追加されました。

    • quarkus.webauthn.load-metadata (ブール値、デフォルト: false) は、Fast Identity Online (FIDO) メタデータの読み込みを制御します。
    • quarkus.webauthn.user-presence-required (ブール値、デフォルト: true) は、ユーザーの存在が必須かどうかを指定します。
  • quarkus.webauthn.user-verification のデフォルトが、DISCOURAGED ではなく REQUIRED になりました。
  • quarkus.webauthn.timeout のデフォルトが、WebAuthn 標準に従って、1 minute ではなく 5 minutes になりました。
  • quarkus.webauthn.pub-key-cred-paramsquarkus.webauthn.public-key-credential-parameters になりました。
  • quarkus.webauthn.originquarkus.webauthn.origins (複数形) になり、WebAuthn 標準に従って、複数のオリジンをサポートするようになりました。
  • 次の新しいブール型の設定オプションが追加されました。

    • quarkus.webauthn.enable-registration-endpoint (ブール値、デフォルト: false) は、デフォルトの登録エンドポイントを有効にします。
    • quarkus.webauthn.enable-login-endpoint (ブール値、デフォルト: false) は、デフォルトのログインエンドポイントを有効にします。

WebAuthn 認証情報検証の変更

  • WebAuthn 認証情報設定アテステーションの検証は、quarkus.security.webauthn.attestation 設定が NONE (デフォルト) 以外の場合、異なる動作をする可能性があります。

quarkus-test-security-webauthn テストモジュールの変更

  • WebAuthnHardware コンストラクターには、エンドポイントの場所を表す URL パラメーターが必須になりました。この URL は、@TestHTTPResource URL url を使用して、テストクラスから取得できます。
  • WebAuthnEndpointHelper.invokeRegistration()obtainRegistrationChallenge() になりました。
  • WebAuthnEndpointHelper.invokeLogin() が、obtainLoginChallenge() に変更され、オプションの username パラメーターを受け入れるようになりました。
  • WebAuthnEndpointHelper.invokeCallback() が次のように分割されました。

    • WebAuthnEndpointHelper.invokeRegistration() には username パラメーターが必須です。
    • WebAuthnEndpointHelper.invokeLogin() は、オプションの username パラメーターを受け入れます。

JavaScript ライブラリーの変更

  • registerOnly()registerClientSteps() になりました。
  • loginOnly()loginClientSteps() になりました。
  • login()loginClientSteps() が、オプションの user パラメーターを受け入れるようになりました。
  • コンストラクターパラメーター registerPath が、registerOptionsChallengePath (デフォルト: /q/webauthn/register-options-challenge) になりました。
  • コンストラクターパラメーター loginPath が、loginOptionsChallengePath (デフォルト: /q/webauthn/login-options-challenge) になりました。
  • コンストラクターパラメーター callbackPath が次のように分割されました。

    • registerPath (デフォルト: /q/webauthn/register)
    • loginPath (デフォルト: /q/webauthn/login)
  • コンストラクターが、次の 2 つのキーを持つ JsonObject 型の csrf オプションを受け入れるようになりました。

    • header: クロスサイトリクエストフォージェリー対策 (CSRF) トークンを含めるために使用されるヘッダー名を指定します。
    • value: CSRF トークンの値を指定します。

      この更新により、quarkus-rest-csrf エクステンションによって保護されるカスタムエンドポイントのセキュリティーが向上します。詳細は、Quarkus ガイド Cross-Site Request Forgery Prevention を参照してください。

この機能のステータスは、さらなる安定化を図るために preview から experimental にダウングレードされました。

詳細は、Quarkus ガイド Using Security with WebAuthn を参照してください。

この変更には手動による介入が必要です。これは、Red Hat build of Quarkus 3.20 へのアプリケーションの移行 ガイドで説明されている自動更新プロセスには含まれていません。

1.7.8. ツール

1.7.8.1. @WithTestResource の不具合修正: restrictToAnnotatedClass が scope に置き換えられる

以前は、Red Hat build of Quarkus 3.15 に、不具合がある未発表のバージョンの @WithTestResource が同梱されていました。

Red Hat build of Quarkus 3.20 では、この不具合が修正されました。これにより、互換性を失わせる変更が生じました。このリリースでは、以前の restrictToAnnotatedClass フィールドが scope に置き換えられました。

1.7.8.2. JUnit 5 Mockito: デフォルトのモッキングストラテジーがインラインに変更される

以前のリリースでは、quarkus-junit5-mockito 依存関係が、subclass モッキングストラテジーを使用してモックオブジェクトを作成するように設定されていました。

Red Hat build of Quarkus 3.20 以降、この依存関係はデフォルトで inline モッキングストラテジーを使用するように設定されます。

1.7.8.3. Quarkus テストフレームワークでの JUnit 5 Mockito バージョンの調整

Red Hat build of Quarkus 3.20.0 では、依存関係バージョンの意図的な不一致により、quarkus-junit5-mockito 依存関係が一時的に機能しなくなっていました。使用中の Mockito のバージョンには JUnit 5.11 以降が必要でしたが、プラットフォームには JUnit 5.10 が含まれていました。

この問題を解決するために、Red Hat build of Quarkus 3.20.1 では JUnit をバージョン 5.12.1 にアップグレードします。この更新により、JUnit と Mockito のバージョンが調整され、quarkus-junit5-mockito 依存関係の互換性が回復されます。

この更新の影響は最小限になると予想されます。コミュニティーと Camel Quarkus でのテストでは、リグレッションは発生しませんでした。詳細は、関連する問題 https://github.com/quarkusio/quarkus/issues/46858 を参照してください。

注記

quarkus-junit5-mockito エクステンションは、Red Hat build of Quarkus ではサポートもテストもされていません。ここでは、ユーザーがアプリケーションの依存関係にこれを含めている場合に備えて注意しておくために言及しています。

回避策

JUnit 5.12.1 で互換性の問題が発生した場合は、Maven プロジェクトで JUnit バージョンをオーバーライドして、Red Hat build of Quarkus 3.20.0 バージョンを使用できます。

すべての JUnit アーティファクトにわたって一貫したアライメントを確保するには、次のように 3.20.0 で使用される JUnit BOM バージョンをインポートします。

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.junit</groupId>
      <artifactId>junit-bom</artifactId>
      <version>5.10.5</version>
      <scope>import</scope>
      <type>pom</type>
    </dependency>
  </dependencies>
</dependencyManagement>
注記

junit-bom は、Red Hat build of Quarkus 3.20.0 でサポートされているテストライブラリーではありません。BOM を使用して JUnit の依存関係を調整する場合は、JUnit プロジェクトのアップストリームバージョンを使用します。

1.7.9. Web

1.7.9.1. HTTP 圧縮にデフォルトで application/json と application/xhtml+xml が追加される

HTTP 圧縮が有効な場合、quarkus.http.compress-media-types 設定プロパティーで、圧縮するメディアタイプのリストが定義されます。Red Hat build of Quarkus 3.20 では、このプロパティーのデフォルト値が変更されました。新しく圧縮されるメディアタイプに、application/jsonapplication/xhtml+xml が追加されました。

1.7.9.2. REST Client: 検索を最適化するための設定の厳格化

Red Hat build of Quarkus 3.20 では、REST Client の設定がより厳格になり、設定を取得するために必要な検索と組み合わせの数が削減されました。

  • MicroProfile Rest Client の設定スタイル [Simple Class Name]/mp-rest は機能しなくなりました。仕様ではこのスタイルは指定されていません。FQCN/mp-rest スタイルは、MicroProfile Rest Client で指定されたとおりに、引き続き期待どおりに機能します。
  • Red Hat build of Quarkus によって検出された REST Client のみが、RestClientsConfig および RestClientsBuildTimeConfig によってロードされます。
  • RestClientsConfig#clients マップと RestClientsBuildTimeConfig#client マップで、REST Client インターフェイスの完全修飾コレクション名 (FQCN) が常に使用されます。以前は、同じ REST Client の重複エントリーに関連する場合でも、検出されたすべてのキーが使用されていました。
  • 従来の設定名 quarkus.rest.client.max-redirectsquarkus.rest.client.multipart-post-encoder-mode が削除されました。
1.7.9.3. Qute: JSON テンプレートにおけるデフォルトの文字エスケープ

Red Hat build of Quarkus 3.20 以降、quarkus-qute エクステンションは、対応するテンプレートのバリアントが設定されている場合、JSON テンプレート内の二重引用符 (")、バックスラッシュ (\)、および制御文字 (U+0000 から U+001F) を自動的にエスケープします。このエクステンションは、src/main/resources/templates ディレクトリーにあるテンプレートにバリアントを自動的に割り当てます。

デフォルトでは、java.net.URLConnection#getFileNameMap() によってテンプレートファイルのコンテンツタイプが決定されます。quarkus.qute.content-types 設定を使用しすると、追加の接尾辞とコンテンツタイプのマッピングを定義できます。

エスケープされていない値をレンダリングするには、java.lang.Object の拡張メソッドとして実装されている raw プロパティーまたは safe プロパティーを使用するか、文字列値を io.quarkus.qute.RawString クラスでラップします。

詳細は、Quarkus ガイド「Qute reference」の Character escapes セクションを参照してください。

Red Hat build of Quarkus 3.20 では、quarkus-rest-jackson エクステンションにより、修飾子のない ObjectMapperCustomizer Bean のみが Jackson JSON プロセッサーのデフォルトの ObjectMapper インスタンスに適用されます。

以前のバージョンでは、カスタム修飾子を持つものも含め、すべての Customizer Bean がデフォルトの ObjectMapper インスタンスに適用されていました。

この変更には手動による介入が必要です。これは、Red Hat build of Quarkus 3.20 へのアプリケーションの移行 ガイドで説明されている自動更新プロセスには含まれていません。

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

以前のリリースでは、quarkus-rest エクステンションでは、?foo= などの空の値を持つクエリーパラメーターが、次のようにデシリアライズされていました。

  • @RestQuery String foo では、空の文字列 ("") が生成されていました。
  • @RestQuery List<String> foo では、1 つの空の文字列を含むコレクションが生成されていました。

Red Hat build of Quarkus 3.20 では、この動作が次のように変更されました。

  • @RestQuery String foo は、null としてデシリアライズされるようになりました。
  • @RestQuery List<String> foo は、空のコレクションとしてデシリアライズされるようになりました。

これに応じてコードを更新してください。

この変更には手動による介入が必要です。これは、Red Hat build of Quarkus 3.20 へのアプリケーションの移行 ガイドで説明されている自動更新プロセスには含まれていません。

1.7.9.6. WebSocket および WebSocket クライアントエクステンションが非推奨に

Red Hat build of Quarkus 3.20 では、Jakarta WebSocket 仕様を実装する quarkus-websockets および quarkus-websockets-client エクステンションが非推奨になりました。

Red Hat build of Quarkus は、今後のリリースでこれらのエクステンションのサポートを停止する予定です。

今後のバージョンとの互換性を確保するには、Quarkus WebSockets Next エクステンション (quarkus-websockets-next) に移行してください。このエクステンションは、より効率的な最新の WebSocket API を提供します。

詳細は、次の Quarkus リソースを参照してください。

この変更には手動による介入が必要です。これは、Red Hat build of Quarkus 3.20 へのアプリケーションの移行 ガイドで説明されている自動更新プロセスには含まれていません。

1.8. 既知の問題

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

1.8.1. FIPS: FIPS 対応環境でのテストにおける既知の制限

Red Hat build of Quarkus 3.20 では、FIPS (Federal Information Processing Standards) モードが有効になっている環境で、Quarkus アプリケーションがどのように動作するかを評価するためのテストが実施されました。

テストは一般的には正常に完了しますが、一部のテクノロジー統合とネイティブイメージ設定には現在、検証やコンパイルを妨げる制限があります。

FIPS 対応環境でのテストでは、OpenID Connect (OIDC)、サポート対象データベース、キャッシング、非ネイティブモードでの Kafka を使用したメッセージング、OpenTelemetry を含む、いくつかの主要コンポーネントで良好な結果が示されました。ただし、一部のテクノロジー統合とネイティブ設定は現在これらの環境では検証できません。

これらの結果は、Red Hat build of Quarkus またはそのコンポーネントが FIPS を公式にサポートしていることを示すものではありません。

検証できないシナリオ

現在、FIPS 対応環境では、次のテクノロジーの統合または設定は検証できません。

  • MariaDB 11.x
  • Mandrel 23.0 および 23.1 を使用した JVM モードとネイティブモードの両方での Infinispan クライアントエクステンション
  • ネイティブモードで SCRAM と OAUTHBEARER SASL メカニズムを使用する Apache Kafka
  • ネイティブモードの JDBC MSSQL ドライバー
  • DB2
  • ネイティブモードのリアクティブ MSSQL クライアント
  • Red Hat Mandrel 23.1 ビルダーイメージを使用したネイティブイメージのコンパイル

注目すべき関連問題

次の公開 Jira チケットには、発生した制限に関する追加の詳細が記載されています。

  • QUARKUS-5984: 互換性の問題により、MariaDB 11.x は FIPS 対応環境で接続できません。
  • QUARKUS-2036: Infinispan クライアントエクステンションには FIPS 対応環境のサポートがありません。
  • QUARKUS-2984: FIPS 対応の RHEL 8 では、JDBC MSSQL および Reactive MSSQL クライアントを使用したネイティブビルドが失敗します。
  • QUARKUS-5232: SASL SCRAM メカニズムは、FIPS 対応環境内のネイティブモードでは使用できません。
  • QUARKUS-5233: SASL OAUTHBEARER メカニズムは、FIPS 対応環境内のネイティブモードでは使用できません。
  • MANDREL-254: Mandrel 23.1 ビルダーイメージは、FIPS 対応環境をサポートするために修正が必要です。
  • QUARKUS-4387: Quarkus Reactive MySQL クライアントは FIPS 対応環境ではサポートされません。
  • QUARKUS-4612: ネイティブ Mandrel 23.0 および 23.1 では、Infinispan クライアントエクステンションが FIPS で失敗します。

回避策

現在、回避策はありません。

このリリースノートは、より広範な互換性テストが継続される間に、既知の課題を事前に公開することを目的としています。

1.8.2. Kafka Streams エクステンションに Microsoft Windows のネイティブライブラリーがない

Microsoft で quarkus-kafka-streams エクステンションを使用するアプリケーションは、ネイティブライブラリー librocksdbjni-win64.dll が見つからないため、ランタイムに失敗します。

起動中に、この問題により次のエラーが発生します。

java.lang.RuntimeException: librocksdbjni-win64.dll was not found inside JAR

このエラーにより、Kafka Streams アプリケーションに必要な RocksDB コンポーネントの初期化が妨げられます。

現時点で使用できる回避策はありません。

エラーの例

13:07:08,118 INFO  [app] ERROR: Failed to start application (with profile [prod])
13:07:08,118 INFO  [app] java.lang.RuntimeException: Failed to start quarkus
13:07:08,118 INFO  [app] 	at io.quarkus.runner.ApplicationImpl.doStart(Unknown Source)
13:07:08,118 INFO  [app] 	at io.quarkus.runtime.Application.start(Application.java:101)
13:07:08,118 INFO  [app] 	at io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:111)
13:07:08,118 INFO  [app] 	at io.quarkus.runtime.Quarkus.run(Quarkus.java:71)
13:07:08,118 INFO  [app] 	at io.quarkus.runtime.Quarkus.run(Quarkus.java:44)
13:07:08,118 INFO  [app] 	at io.quarkus.runtime.Quarkus.run(Quarkus.java:124)
13:07:08,118 INFO  [app] 	at io.quarkus.runner.GeneratedMain.main(Unknown Source)
13:07:08,118 INFO  [app] Caused by: java.lang.ExceptionInInitializerError
13:07:08,118 INFO  [app] 	at io.quarkus.kafka.streams.runtime.KafkaStreamsRecorder.loadRocksDb(KafkaStreamsRecorder.java:14)
13:07:08,118 INFO  [app] 	at io.quarkus.deployment.steps.KafkaStreamsProcessor$loadRocksDb1611413226.deploy_0(Unknown Source)
13:07:08,118 INFO  [app] 	at io.quarkus.deployment.steps.KafkaStreamsProcessor$loadRocksDb1611413226.deploy(Unknown Source)
13:07:08,118 INFO  [app] 	... 11 more
13:07:08,118 INFO  [app] Caused by: java.lang.RuntimeException: librocksdbjni-win64.dll was not found inside JAR.
13:07:08,118 INFO  [app] 	at org.rocksdb.NativeLibraryLoader.loadLibraryFromJarToTemp(NativeLibraryLoader.java:118)
13:07:08,118 INFO  [app] 	at org.rocksdb.NativeLibraryLoader.loadLibraryFromJar(NativeLibraryLoader.java:102)
13:07:08,118 INFO  [app] 	at org.rocksdb.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:82)
13:07:08,118 INFO  [app] 	at org.rocksdb.RocksDB.loadLibrary(RocksDB.java:70)
13:07:08,118 INFO  [app] 	at org.rocksdb.RocksDB.<clinit>(RocksDB.java:39)
13:07:08,118 INFO  [app] 	... 14 more

詳細は、QUARKUS-3434 を参照してください。

1.8.3. Windows 上の Snappy のネイティブライブラリーが見つからない

Red Hat build of Quarkus 3.20 では、Windows 上で Snappy 圧縮ライブラリーを使用するアプリケーションを実行すると、ネイティブライブラリーが見つからないためエラーが発生します。

Windows 環境で Snappy を使用してデータを圧縮しようとすると、次の例のようなエラーメッセージが表示される場合があります。

エラーメッセージの例

...
org.eclipse.microprofile.reactive.messaging.Message$5@1e8dc267 from channel 'test' was not sent to Kafka topic 'test' - nacking message: org.apache.kafka.common.KafkaException: org.xerial.snappy.SnappyError: [FAILED_TO_LOAD_NATIVE_LIBRARY] no native library is found for os.name=Windows and os.arch=x86_64
...

回避策: 現時点では回避策はありません。この問題は今後のリリースで解決される予定です。

詳細は、QUARKUS-5983 を参照してください。

Red Hat build of Quarkus 3.20 では、ヒープスナップショット検証エラーが原因で、Mandrel 23.1 ランタイムを使用したネイティブイメージのビルドが断続的に失敗する可能性があります。

ビルドプロセスは、型が到達可能としてマークされていないことを示すエラーで失敗します。

AnalysisType<... reachable: false>

これらのエラーは一貫しておらず、異なるアプリケーション間で発生する可能性があります。それらは管理された環境において確実に再現されていません。

エラーの例 1

com.oracle.graal.pointsto.util.AnalysisError: The heap snapshot verifier discovered a type not marked as reachable:
AnalysisType<VMOption$Origin[] -> HotSpotType<[Lcom/sun/management/VMOption$Origin;, resolved>, allocated: false, inHeap: false, reachable: false>
	at com.oracle.graal.pointsto.heap.HeapSnapshotVerifier$ScanningObserver.ensureTypeScanned(HeapSnapshotVerifier.java:332)
	...

エラーの例 2

AnalysisType<MemoryType[] -> HotSpotType<[Ljava/lang/management/MemoryType;, resolved>, allocated: false, inHeap: false, reachable: false>
AnalysisType<HotSpotDiagnosticMXBean$ThreadDumpFormat[] -> HotSpotType<[Lcom/sun/management/HotSpotDiagnosticMXBean$ThreadDumpFormat;, resolved>, allocated: false, inHeap: false, reachable: false>

エラーの例 3

AnalysisType<MemoryType[] -> HotSpotType<[Ljava/lang/management/MemoryType;, resolved>, allocated: false, inHeap: false, reachable: false>

回避策: ネイティブイメージのビルドを再試行します。問題は断続的に発生するため、次回の試行ではビルドが成功する可能性があります。

この問題は今後のリリースで解決される予定です。

詳細は、MANDREL-332 を参照してください。

Red Hat build of Quarkus 3.20 では、application.properties ファイルに次のプロパティーが設定されている場合、quarkus-opentelemetry エクステンションを使用するアプリケーションは開発モードで再起動しません。

  • quarkus.otel.traces.enabled=false
  • quarkus.otel.metrics.enabled=true

再読み込みの試行中に、Quarkus は UnsatisfiedResolutionException を出力します。

エラーメッセージの例

jakarta.enterprise.inject.UnsatisfiedResolutionException: No bean found for required type [class io.quarkus.opentelemetry.runtime.tracing.DelayedAttributes] and qualifiers [[@jakarta.enterprise.inject.Any()]]

回避策

現時点で使用できる回避策はありません。この問題は今後のリリースで解決される予定です。

1.8.6. Quarkus CLI が TLS レジストリー CLI プラグインを検出できない

Red Hat build of Quarkus 3.15 では、Quarkus CLI の TLS レジストリーサポートを有効にする quarkus-tls-registry-cli プラグインが導入されました。

ただし、開発ツールは現在、maven.repository.redhat.com でホストされている Quarkus CLI プラグインを検出しません。その結果、Quarkus CLI はデフォルトでは TLS レジストリー CLI プラグインを解決できません。

この問題が発生すると、CLI は次の出力のようなエラーを返します。

[jbang] [ERROR] Could not resolve dependencies: The following artifacts could not be resolved: io.quarkus:quarkus-tls-registry-cli:jar:3.20.2.SP1-redhat-00003 (absent): Could not find artifact io.quarkus:quarkus-tls-registry-cli:jar:3.20.2.SP1-redhat-00003 in central (https://repo1.maven.org/maven2/)

回避策: Quarkus CLI がプラグインを解決できるようにするには、https://maven.repository.redhat.com/ga/ にある Red Hat Maven リポジトリーを使用するように JBang を設定します。

次のいずれかの方法を使用できます。

  • 次の内容を含む jbang.properties ファイルを作成します。

    run.repos=central,https://maven.repository.redhat.com/ga/

    この設定をローカルに適用するには、ファイルをプロジェクトのルートディレクトリーに配置します。設定をグローバルに適用するには、ファイルを ~/.jbang ディレクトリーに配置します。

  • JBang がすでにインストールされている場合は、次のコマンドを実行してリポジトリーをグローバルに設定します。

    jbang config set run.repos central,https://maven.repository.redhat.com/ga/

詳細は、QUARKUS-5183 を参照してください。

1.8.7. Quarkus CLI が Red Hat build of Quarkus プラットフォームバージョンのみを更新する

Red Hat build of Quarkus 3.20 では、更新コマンドを実行すると、Red Hat build of Quarkus プラットフォーム (com.redhat.quarkus.platform) に含まれる BOM のみが更新されます。これらには、quarkus-camel-bomquarkus-cxf-bom (リリースの一部である場合)、quarkus-qpid-jms-bomquarkus-operator-sdk-bom などの BOM が含まれます。

ただし、このコマンドは、アップストリームコミュニティーリリースに関連付けられた BOM バージョンを更新しません。プロジェクトに Red Hat build of Quarkus とアップストリーム BOM の両方が含まれている場合、この問題により、Quarkus とアップストリーム BOM の組み合わせに互換性がなくなる可能性があります。

更新コマンドの例

$ mvn com.redhat.quarkus.platform:quarkus-maven-plugin:3.20.2.SP1-redhat-00003:update -Dmaven.repo.local=<path-to-local-repo>

問題のある pom.xml ファイルの例

<properties>
    <quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>
    <quarkus.platform.group-id>com.redhat.quarkus.platform</quarkus.platform.group-id>
    <quarkus.platform.version>3.20.2.redhat-00004</quarkus.platform.version>
</properties>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>${quarkus.platform.group-id}</groupId>
            <artifactId>${quarkus.platform.artifact-id}</artifactId>
            <version>${quarkus.platform.version}</version>
        </dependency>
        <dependency>
            <groupId>io.quarkus.platform</groupId>
            <artifactId>quarkus-amazon-services-bom</artifactId>
            <version>3.2.12.Final</version> 
1

        </dependency>
    </dependencies>
</dependencyManagement>

1
バージョンは更新されていません。

回避策: バージョン番号を手動で更新します。

詳細は、QUARKUS-5185 を参照してください。

Red Hat build of Quarkus 3.20 では、Mutiny タイプを返す非同期 REST クライアントで Hibernate Reactive を使用すると、現在の Hibernate Reactive セッションまたはトランザクションが失われる可能性があります。

これは、親の初期コンテキストをコピーしない新しい Vert.x コンテキストで、ユーザーコールバックが呼び出されるために発生します。その結果、コールバックはセッションまたはトランザクションが存在しないために失敗するか、または暗黙的に失敗し、エンティティーの変更をデータベースにフラッシュしない可能性があります。変更は、意図した外部トランザクションではなく、新しいトランザクションにフラッシュされる可能性もあります。

回避策

現時点で使用できる回避策はありません。この問題は今後のリリースで解決される予定です。

Red Hat build of Quarkus 3.20 では、quarkus/mandrel-for-jdk-21-rhel8:23.1 Red Hat build of Quarkus Native Builder イメージを使用して、FIPS 対応環境内でネイティブモードで RSA 暗号を初期化すると、NullPointerException (NPE) エラーが発生します。

この問題は、FIPS が有効になっているネイティブモードでのみ発生し、FIPS が無効になっているネイティブモードには影響しません。また、FIPS が有効になっている Red Hat build of OpenJDK を使用する場合、JVM モードには影響しません。

注記

FIPS 対応環境ではネイティブモードはサポートされません。

エラーメッセージの例

2024-10-17 10:45:01,931 ERROR [io.qua.ver.htt.run.QuarkusErrorHandler] (executor-thread-1) HTTP Request to /repro failed, error id: 9b1f5dbb-058b-4c9b-9377-f3acc0a6cba5-1: java.lang.RuntimeException: java.lang.NullPointerException
    at org.acme.ReproResource.init(ReproResource.java:38)
...

回避策:

  1. 存在する場合は、application.properties ファイルから次のプロパティーを削除します。

    quarkus.security.security-providers=SunPKCS11
  2. ランタイムに ReproResource クラスを初期化するには、application.properties ファイルに次のプロパティーを追加します。

    quarkus.native.additional-build-args=--initialize-at-run-time=org.acme.ReproResource

詳細は、MANDREL-245 を参照してください。

1.8.10. WebSockets Next: オープンイベント例外で接続エラーメトリクスが増加しない

Red Hat build of Quarkus 3.20 では、websockets-next エクステンションを使用して、@WebSocket エンドポイントが @OnOpen ライフサイクルメソッドで例外をスローすると、次のメトリクスが増分されません。

  • quarkus_websockets_server_connections_opened_errors_total{uri=${ENDPOINT}}
  • quarkus_websockets_client_connections_opened_errors_total{uri=${ENDPOINT}}

この動作は、サーバー側とクライアント側の両方の WebSocket 接続メトリクスに影響します。

回避策: 現時点では回避策はありません。この問題は今後のリリースで解決される予定です。

詳細は、QUARKUS-5977 を参照してください。

1.9. Red Hat build of Quarkus 3.20.2 SP1

Red Hat build of Quarkus 3.20 では安定性が向上しました。また、ユーザーに大きな影響を与えるバグ修正が含まれています。

Red Hat build of Quarkus の最新の修正を入手するには、利用可能な最新バージョンである 3.20.2 SP1 を使用する必要があります。

1.9.1. バグ修正

このリリースで解決された問題のリストを表示するには、Red Hat build of Quarkus 3.20.2 SP1 のバグ修正 を参照してください。

1.9.2. セキュリティー修正

  • CVE-2025-55163 netty-codec-http2: Netty MadeYouReset HTTP/2 DDoS の脆弱性

1.9.3. アドバイザリー

Red Hat build of Quarkus 3.20.2.SP1 の使用とデプロイを開始する前に、このリリースに関連する次のアドバイザリーを確認してください。

1.10. Red Hat build of Quarkus 3.20.2

Red Hat build of Quarkus 3.20 では安定性が向上しました。また、ユーザーに大きな影響を与えるバグ修正が含まれています。

Red Hat build of Quarkus の最新の修正を入手するには、利用可能な最新バージョン (3.20.2) を使用する必要があります。

1.10.1. バグ修正

このリリースで解決された問題のリストを表示するには、Red Hat build of Quarkus 3.20.2 bug fixes を参照してください。

これらの修正の中で、互換性に影響する可能性のある次の変更に注意してください: 「以前のバージョンとの互換性に影響を与える変更」セクションにリストされている Quarkus テストフレームワークでの JUnit 5 と Mockito のバージョン調整

1.10.2. セキュリティー修正

1.10.3. アドバイザリー

Red Hat build of Quarkus 3.20.2 の使用とデプロイを開始する前に、このリリースに関連する次のアドバイザリーを確認してください。

1.11. Red Hat build of Quarkus 3.20.1

Red Hat build of Quarkus 3.20 では安定性が向上しました。また、ユーザーに大きな影響を与えるバグ修正が含まれています。

Red Hat build of Quarkus の最新の修正を入手するには、利用可能な最新バージョン (3.20.2) を使用する必要があります。

1.11.1. バグ修正

このリリースで解決された問題のリストを表示するには、Red Hat build of Quarkus 3.20.1 のバグ修正 を参照してください。

これらの修正の中で、互換性に影響する可能性のある次の変更に注意してください: 「以前のバージョンとの互換性に影響を与える変更」セクションにリストされている Quarkus テストフレームワークでの JUnit 5 と Mockito のバージョン調整

1.11.2. セキュリティー修正

  • CVE-2025-24970 io.netty/netty-handler: SslHandler ではパケットが正しく検証されないため、ネイティブ SSLEngine を使用するとネイティブクラッシュが発生する可能性がある

1.11.3. アドバイザリー

Red Hat build of Quarkus 3.20.1 の使用とデプロイを開始する前に、このリリースに関連する次のアドバイザリーを確認してください。

1.12. Red Hat build of Quarkus 3.20.0 に関するアドバイザリー

Red Hat build of Quarkus 3.20.0 の使用とデプロイを開始する前に、このリリースに関連する次のアドバイザリーを確認してください。

法律上の通知

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

© 2026 Red Hat
トップに戻る