Red Hat build of Quarkus 3.15 へのアプリケーションの移行
概要
Red Hat build of Quarkus ドキュメントへのフィードバックの提供 リンクのコピーリンクがクリップボードにコピーされました!
エラーを報告したり、ドキュメントを改善したりするには、Red Hat Jira アカウントにログインし、課題を送信してください。Red Hat Jira アカウントをお持ちでない場合は、アカウントを作成するように求められます。
手順
- 次のリンクをクリックして チケットを作成します。
- Summary に課題の簡単な説明を入力します。
- Description に課題や機能拡張の詳細な説明を入力します。問題があるドキュメントのセクションへの URL も記載してください。
- Submit をクリックすると、課題が作成され、適切なドキュメントチームに転送されます。
第1章 Red Hat build of Quarkus 3.15 へのアプリケーションの移行 リンクのコピーリンクがクリップボードにコピーされました!
アプリケーション開発者は、quarkus CLI または Maven を使用して、Red Hat build of Quarkus バージョン 3.2 以降をベースとするアプリケーションをバージョン 3.15 に移行できます。
Quarkus CLI は、Quarkus プロジェクトの作成、更新、ビルドなどのタスクを含む開発目的で使用されます。Red Hat は、実稼働環境での Quarkus CLI の使用をサポートしていません。
1.1. プロジェクトを Red Hat build of Quarkus の最新バージョンに更新する リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus プロジェクトを最新バージョンに更新するには、このガイドの後半で詳しく説明する次の手順に従います。
-
quarkusCLI または Maven コマンドを使用して、自動更新タスクを実行します。 - 以前のバージョンとの互換性に影響を与える変更 セクションを参照して、手動更新タスクを実行します。
1.1.1. 自動更新 リンクのコピーリンクがクリップボードにコピーされました!
quarkus CLI または Maven コマンドを実行すると、プロジェクトの依存関係とソースコードをアップグレードする OpenRewrite レシピがトリガーされます。この自動化されたアプローチにより、信頼性の高い便利な方法でプロジェクトを更新できます。
ただし、すべての移行タスクが自動化されるわけではありません。quarkus update コマンドまたは Maven の同等のコマンドを実行しても、特定の更新が適用されない場合は、次の理由が考えられます。
- 必要な移行タスクが利用可能な OpenRewrite レシピの対象外である。
- プロジェクトが依存するエクステンションと Red Hat build of Quarkus の最新バージョンの間に互換性がない。
1.1.2. 手動更新 リンクのコピーリンクがクリップボードにコピーされました!
手動更新では、あらゆる移行タスクに対応する柔軟性と制御性が得られ、プロジェクトを特定のニーズに合わせて調整できます。自動化されていないタスクは手動で処理する必要があります。
以前のリリースからこのリリースに更新するために必要な移行タスクのリストは、このガイドの 以前のバージョンとの互換性に影響を与える変更 セクションを参照してください。
アプリケーションプロジェクトの現在のバージョンからアップグレード先のバージョンまでの間にリリースされた各バージョンの移行ガイドを確認することが重要です。この確認作業により、更新プロセスについて十分な情報が得られ、準備が整います。たとえば、バージョン 3.8 から 3.15 にアップグレードする場合は、このガイドを確認するだけで済みます。バージョン 3.2 から 3.15 にアップグレードする場合は、このガイドの中間バージョン Red Hat build of Quarkus 3.8 へのアプリケーションの移行 ガイドも確認する必要があります。
この移行ガイドの各タスクで、必要な変更の概要を示し、その変更が quarkus update コマンドとそれに相当する Maven によって自動的に処理されるかどうかを示します。
その他の背景情報は、Quarkus コミュニティーの Migration guides を参照してください。
1.2. quarkus CLI を使用したプロジェクトの更新 リンクのコピーリンクがクリップボードにコピーされました!
quarkus CLI を使用して Red Hat build of Quarkus プロジェクトを更新します。
Quarkus CLI は、Quarkus プロジェクトの作成、更新、ビルドなどのタスクを含む開発目的で使用されます。Red Hat は、実稼働環境での Quarkus CLI の使用をサポートしていません。
前提条件
- IDE
-
JDK 17 または 21 がインストールされ、
JAVA_HOMEが設定されている。 - Apache Maven 3.8.6 以降
- オプション: ネイティブ Linux 実行可能ファイルをビルド するために、Red Hat build of Quarkus は GraalVM Mandrel に基づく Red Hat build of Quarkus Native Builder イメージ (quarkus/mandrel-for-jdk-21-rhel8) の使用をサポートしています。
-
quarkusCLI 3.15.6 - Red Hat build of Quarkus バージョン 3.2 以降をベースとするプロジェクト
手順
- バージョン管理システムでプロジェクトの作業ブランチを作成します。
-
インストールガイド に従って、最新バージョンの
quarkusCLI をインストールします。 次のコマンドを実行して、インストールを確認します。
quarkus -v 3.15.6
quarkus -v 3.15.6Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 重要: 「Red Hat build of Quarkus スタートガイド」の Red Hat build of Quarkus エクステンションレジストリークライアントの設定 セクションの手順に従って、エクステンションレジストリークライアントを設定します。
- ターミナルで、プロジェクトディレクトリーに移動します。
プロジェクトを更新します。
quarkus update
quarkus updateCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 特定のストリームに更新するには、
--streamオプションを使用し、それに続けて特定のバージョンを指定します。次に例を示します。quarkus update --stream=3.15
quarkus update --stream=3.15Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 更新コマンドの出力で指示を確認し、推奨されるタスクを実行します。
- 差分ツールを使用して、更新プロセス中に行われたすべての変更を調べます。
- プロジェクトの更新によって処理されなかった変更を手動で実行します。詳細は、以下の 以前のバージョンとの互換性に影響を与える変更 セクションを参照してください。
- 実稼働環境にデプロイする前に、プロジェクトがエラーなくビルドされ、すべてのテストに合格し、アプリケーションが期待どおりに機能することを確認します。
1.3. Maven を使用したプロジェクトの更新 リンクのコピーリンクがクリップボードにコピーされました!
Maven を使用して Red Hat build of Quarkus プロジェクトを更新します。
前提条件
- IDE
-
JDK 17 または 21 がインストールされ、
JAVA_HOMEが設定されている。 - Apache Maven 3.8.6 以降
- オプション: ネイティブ 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 バージョン 3.2 以降をベースとするプロジェクト
手順
- バージョン管理システムでプロジェクトの作業ブランチを作成します。
- 重要: 「Red Hat build of Quarkus スタートガイド」の Red Hat build of Quarkus エクステンションレジストリークライアントの設定 セクションに記載されているように、エクステンションレジストリークライアントを設定します。
- ターミナルを開き、プロジェクトディレクトリーに移動します。
Red Hat build of Quarkus Maven プラグインのバージョンが、サポートされている最新バージョンと一致していることを確認します。Red Hat build of Quarkus スタートガイド に従ってプロジェクトを設定し、次を実行します。
mvn com.redhat.quarkus.platform:quarkus-maven-plugin:3.15.6.redhat-00002:update
mvn com.redhat.quarkus.platform:quarkus-maven-plugin:3.15.6.redhat-00002:updateCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 特定のストリームに更新するには、
-Dstreamオプションを使用し、それに続けて目的のバージョンを指定します。次に例を示します。mvn com.redhat.quarkus.platform:quarkus-maven-plugin:3.15.6.redhat-00002:update -Dstream=3.15
mvn com.redhat.quarkus.platform:quarkus-maven-plugin:3.15.6.redhat-00002:update -Dstream=3.15Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 更新コマンドの出力で指示を確認し、推奨されるタスクを実行します。
- 差分ツールを使用して、更新プロセス中に行われたすべての変更を調べます。
- プロジェクトの更新によって処理されなかった変更を手動で実行します。詳細は、以下の 以前のバージョンとの互換性に影響を与える変更 セクションを参照してください。
- 実稼働環境にデプロイする前に、プロジェクトがエラーなくビルドされ、すべてのテストに合格し、アプリケーションが期待どおりに機能することを確認します。
1.4. 以前のバージョンとの互換性に影響を与える変更 リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、以前の製品バージョンでビルドされたアプリケーションの互換性に影響を与える、Red Hat build of Quarkus 3.15 の変更点を説明します。
これらの重大な変更を確認し、アプリケーションを Red Hat build of Quarkus 3.15 に更新した後もアプリケーションが引き続き機能するように必要な手順を実行してください。
このセクションに記載されている更新の多くは、quarkus update または同等の Maven コマンドで実行できます。これにより、プロジェクトの依存関係とソースコードを Red Hat build of Quarkus の最新バージョンに更新する自動 OpenRewrite レシピがトリガーされます。
ただし、すべての移行タスクが自動化されるわけではありません。自動更新によって特定の更新が適用されない場合は、必要な移行タスクが利用可能な OpenRewrite レシピの対象外であるか、プロジェクトが依存するエクステンションと最新バージョンの間に互換性がないことが原因である可能性があります。このような場合は、手動で更新を実行する必要があります。手動の移行タスクを特定して対処するには、次の項目を必ず確認してください。
1.4.1. 互換性 リンクのコピーリンクがクリップボードにコピーされました!
1.4.1.1. Spring 互換性レイヤーが Spring Boot 3 に合わせて更新される リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.15 では、最新の Spring Boot 3 API 更新に合わせて quarkus-spring-data-rest-extension がアップグレードされました。
コード内で PagingAndSortingRepository インターフェイスを使用している場合、このアップグレードによって重大な変更が発生する可能性があります。以前は、PagingAndSortingRepository は CrudRepository を拡張し、カスタムリポジトリーが CrudRepository からメソッドを継承できるようにしていました。
この変更に関連する問題を解決するには、カスタムリポジトリーを更新して、ListCrudRepository または CrudRepository のいずれかを直接拡張する必要があります。この調整により、必要なメソッドへの継続的なアクセスが確保され、更新されたアーキテクチャーとの互換性が維持されます。
1.4.2. コア リンクのコピーリンクがクリップボードにコピーされました!
1.4.2.1. Dev Services の起動検出の変更 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.15 では、Dev Services を起動するかどうかを決定する方法が変更されました。
以前は、Dev Services を起動するかを決定するために、Red Hat build of Quarkus は、設定プロパティーが拡張せずに定義されているかをチェックしていました。ただし、この方法では、プロパティーが空の値に展開された場合に問題が発生しました。
現在、Red Hat build of Quarkus は、展開されたプロパティーが空かどうかを最初にチェックします。この変更により、展開されたプロパティーが空になった場合に、以前は起動しなかった Dev Services が予期せず起動する可能性があります。ほとんどの Dev Services は、JDBC URL などの特定のプロパティーが提供されていないときに開始されます。
この変更により、展開されたプロパティーが空にならないように、設定プロパティーを調整してデフォルト値を含める必要があります。
たとえば、quarkus-test-oidc-server コンポーネントを使用して OpenID Connect (OIDC) サーバーをモックし、application.properties ファイルに次の内容が含まれている場合:
%test.quarkus.oidc.auth-server-url=${keycloak.url}/realms/quarkus/
%test.quarkus.oidc.auth-server-url=${keycloak.url}/realms/quarkus/
プロパティー値を次のように変更します。
%test.quarkus.oidc.auth-server-url=${keycloak.url:replaced-by-test-resource}/realms/quarkus/
%test.quarkus.oidc.auth-server-url=${keycloak.url:replaced-by-test-resource}/realms/quarkus/
このように、keycloak.url が定義されていない場合、デフォルトの replaced-by-test-resource 値により、プロパティーが空の値に拡張されることが防止され、Dev Services が意図せず起動することが回避されます。式で変数が定義されていない場合、式全体が空になります。
この特定の例では、quarkus update を実行することでこの変更が自動的に適用されます。ただし、他のユースケースでは、変更を手動で適用する必要がある場合があります。
1.4.2.2. GraalVM SDK の更新 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.15 では、GraalVM SDK の依存関係がバージョン 23.1.2 に更新され、以前の見落としが修正され、最新の GraalVM 機能との互換性が確保されています。
GraalVM の代替を使用してエクステンションを開発する場合は、org.graalvm.sdk:graal-sdk 依存関係を org.graalvm.sdk:nativeimage に置き換えます。nativeimage アーティファクトには置換に必要なクラスのみが含まれるため、より合理化されます。
この変更を適用するには、Red Hat build of Quarkus 3.15 へのアプリケーションの移行 ガイドに記載されている自動更新を実行します。
JDK 17 の要件: GraalVM SDK 23.1.2 では、実行時に最低でも JDK 17 が必要です。
1.4.2.3. Infinispan 15 コンポーネントのアップグレード リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.15 では、Infinispan 15 コンポーネントがバージョン 15.0 にアップグレードされます。
以前のリリースでは、Infinispan 15 インテグレーションより前は、次の .Query.java コードを使用してクエリーを実行していました。
ただし、このリリースでは、RemoteCache が @ApplicationScoped プロキシー Bean になり、Search.getQueryFactory によって ClassCastException が発生するため、このコードは機能しなくなりました。
これを解決するには、次のように RemoteCache API の query メソッドを使用して間接参照を削除します。
この変更は手動で適用する必要があります。これは、Red Hat build of Quarkus 3.15 へのアプリケーションの移行 ガイドで説明されている自動更新ではカバーされません。
1.4.2.4. パッケージ設定の変更 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.15 では、次のパッケージ関連のプロパティーが改名または変更されました。設定で元のプロパティーを使用した場合、それらは引き続き機能しますが、警告が表示されます。
この変更を適用するには、Red Hat build of Quarkus 3.15 へのアプリケーションの移行 ガイドに記載されている自動更新を実行します。
| 元の名前 | 現在の名前 |
|---|---|
|
|
JAR ビルドの場合は、有効な JAR タイプ ( |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
注記: この設定プロパティーは通常、uber-JAR をビルドする場合にのみ適用されます。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 代替はありません。これらのプロパティーは無視されるようになりました。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
これらの変更を反映し、ビルドプロセス中の警告メッセージを停止するために、コードファイルと設定ファイルを更新します。
1.4.2.5. ProfileManager と ProfileManager#getActiveProfile が削除される リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.15 では、ProfileManager が複数のプロファイルを処理しなかったため、非推奨の ProfileManager クラスと ProfileManager#getActiveProfile メソッドが削除されました。
この削除により、次の設定変更が必要になります。
アクティブなプロファイルを取得するには、io.quarkus.runtime.configuration.ConfigUtils#getProfiles API を使用します。
この変更は手動で適用する必要があります。これは、Red Hat build of Quarkus 3.15 へのアプリケーションの移行 ガイドで説明されている自動更新ではカバーされません。
1.4.2.6. quarkus-app ディレクトリーは fast-jar パッケージ用にのみ作成されるようになる リンクのコピーリンクがクリップボードにコピーされました!
以前のリリースでは、生成されるアーティファクトの種類に関係なく、ビルドシステムの出力ディレクトリーに quarkus-app ディレクトリーが常に生成されるという意図しない動作が確認されました。
Red Hat build of Quarkus 3.15 では、ビルドプロセスによって、デフォルトのアーティファクトタイプである fast-jar パッケージに対してのみ quarkus-app ディレクトリーが作成されます。別のアーティファクトタイプ用にビルドを設定すると、quarkus-app ディレクトリーは作成されません。
1.4.2.7. エクステンション開発者に必要な調整 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.15 では、ランタイムファイルと設定ドキュメントの生成に使用されるエクステンションアノテーションプロセッサーが再開発され、柔軟性が向上しましたが、新しい制約が追加されました。
-
同じモジュール内で従来の
@ConfigRootと新しい@ConfigMappingアプローチを混在させることは許可されなくなりました。@ConfigMappingのみを使用する場合は、何も変更する必要はありません。 従来の
@ConfigRootの場合は、maven-compiler-plugin設定に以下を追加して、アノテーションプロセッサーに通知します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow テストクラスに設定アノテーションが存在しない場合、このフラグはテストクラスのコンパイル時に警告をトリガーできます。これを回避するには、
default-compile実行に対してのみアノテーションプロセッサーを有効にします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
新しい @ConfigMapping インターフェイスへの移行が推奨されますが、スムーズな移行を確実にするために、従来の @ConfigRoot クラスのサポートもしばらく継続される予定です。非推奨化の予定は、後日発表される予定です。
この変更は手動で適用する必要があります。これは、Red Hat build of Quarkus 3.15 へのアプリケーションの移行 ガイドで説明されている自動更新ではカバーされません。
1.4.3. データ リンクのコピーリンクがクリップボードにコピーされました!
1.4.3.1. 起動時にデータベースのバージョンが検証される リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.15 では、Hibernate ORM エクステンションは、実行時に接続するデータベースバージョンが、ビルド時に設定されたバージョン以上であることを確認します。この検証は、設定が Red Hat build of Quarkus でサポートされている最小データベースバージョンをターゲットとするデフォルト設定に依存している場合でも実行されます。
この更新の目的は、Hibernate ORM または Red Hat build of Quarkus がサポートしなくなったデータベースバージョンを使用しようとした場合に、アプリケーション開発者に警告することです。サポートされなくなったデータベースバージョンを使用しようとすると、Red Hat build of Quarkus は起動せず、例外がスローされます。
この変更は、次のデータベースバージョンに依存するアプリケーションに影響します。
- DB2 10.5 より前のバージョン
- バージョン 10.15.2 より前の Derby
- バージョン 19.0 より前の Oracle データベース
- MariaDB バージョン 10.6 より前
- Microsoft SQL Server バージョン 13 (2016) より前
- MySQL バージョン 8.0 より前
- PostgreSQL バージョン 12.0 より前
データベースをサポートされているバージョンにアップグレードできない場合でも、一部の機能が動作しない可能性がありますが、引き続き使用してみることはできます。以前のサポートされていないデータベースバージョンを引き続き使用するには、db-version を明示的に設定し、必要に応じて dialect も設定します。
この変更は手動で適用する必要があります。これは、Red Hat build of Quarkus 3.15 へのアプリケーションの移行 ガイドで説明されている自動更新ではカバーされません。
詳細は、以下の資料を参照してください。
- Quarkus の「Hibernate ORM と Jakarta Persistence の使用」ガイドの サポートされているデータベース のセクション
- Hibernate ORM: サポートされている方言
- Hibernate ORM: コミュニティー方言
1.4.3.2. Dev Services のデフォルトイメージの更新 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.15 では、いくつかの Dev Services のデフォルトイメージが次のバージョンに更新されました。
- PostgreSQL バージョン 16
- MySQL バージョン 8.4
- MongoDB バージョン 7.0
- Elasticsearch バージョン 8.15
- OpenSearch バージョン 2.16
この変更を適用するには、Red Hat build of Quarkus 3.15 へのアプリケーションの移行 ガイドに記載されている自動更新を実行します。
これらのサービスの特定のバージョンまたはディストリビューションを使用するには、アプリケーションプロパティーでデフォルトのコンテナーイメージを手動でオーバーライドする必要があります。
詳細は、Quarkus の「Dev Services for Elasticsearch」ガイドの イメージの設定 セクションを参照してください。
1.4.3.3. Hibernate ORM auto-flush 最適化 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.15 では、Hibernate Object/Relational Mapping (ORM) auto-flush 機能が最適化されています。
現在、デフォルトでは、Hibernate Query Language (HQL)、Java Persistence Query Language (JPQL)、またはネイティブクエリーを実行する前に、これらの変更がクエリー結果に影響を及ぼす可能性があることを検出した場合、Hibernate ORM は保留中の変更のみをデータベースにフラッシュします。
ほとんどの場合、この最適化により、バッチ処理の効率化など、アプリケーションのパフォーマンスが向上しますが、次の問題が発生する可能性があります。
- ネイティブクエリーを実行している場合、自動フラッシュでは、クエリーで関連するエンティティータイプを指定する必要があります。詳細は、Hibernate ORM ユーザーガイド を参照してください。
- 保留中の変更がクエリーで使用される外部キーのターゲットテーブルにのみ影響するが、それらのターゲットテーブルがクエリーで使用されていない場合、自動フラッシュは行われません。
以前の動作に戻して別のデフォルト値を選択する場合は、quarkus.hibernate-orm.flush.mode 設定プロパティーが導入されています。このプロパティーを always に設定します: quarkus.hibernate-orm.flush.mode=always。
この変更は手動で適用する必要があります。これは、Red Hat build of Quarkus 3.15 へのアプリケーションの移行 ガイドで説明されている自動更新ではカバーされません。
詳細は、以下の資料を参照してください。
1.4.3.4. Hibernate ORM のバージョン 6.6 へのアップグレード リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.15 では、Hibernate ORM エクステンションが Hibernate ORM 6.6 にアップグレードされ、次の重大な変更が導入されました。
特定の形式の不適切な設定、マッピング、またはクエリーを持つアプリケーションでも例外がスローされる可能性があります。以前は、警告を出すか、誤動作するだけでした。以下に例を示します。
-
@GeneratedValue識別子または null 以外の値に設定された@Versionプロパティーを持つエンティティーをマージするときに、無効な作成試行が失敗するようになりました。以前は、データベースにエンティティーを作成していました。詳細は、Merge versioned entity when row is deleted を参照してください。 -
同じタイプに
@MappedSuperclassと@Embeddableの両方を適用することはできなくなりました。詳細は、Explicit validation of annotated class types を参照してください。
-
-
予期しない動作を回避するために、一部の機能がデフォルトで有効になっています。たとえば、
@Embeddableアノテーションが付けられたサブタイプを持つ Embeddable は、デフォルトで識別子ベースの継承を使用するようになりました。詳細は、Discriminator-based embeddable inheritance のリンクを参照してください。 - 場合によっては、Java Persistence API (JPA) 仕様に準拠するように動作が変更されました。詳細は、Criteria:jakarta.persistence.criteria.Expression#as(Class) を参照してください。
詳細は、以下の資料を参照してください。
1.4.3.5. 送信トレイポーリングシステムテーブル用の Hibernate Search データベーススキーマの更新 リンクのコピーリンクがクリップボードにコピーされました!
quarkus-hibernate-search-orm-outbox-polling エクステンションは、Hibernate ORM が接続するデータベース内のシステムテーブルに依存しており、Red Hat build of Quarkus 3.15 では、これらのシステムテーブルのスキーマが変更される可能性があります。
このエクステンションを使用する場合は、データベーススキーマを移行する必要があります。データベーススキーマを移行する方法は、"Hibernate Search migration" ガイドの Outbox polling database tables セクションを参照してください。
データベーススキーマを更新できない場合は、次の設定を適用して以前のデフォルトを復元します。
デフォルトの永続性ユニットの場合は、以下を指定します。
-
quarkus.hibernate-search-orm.coordination.entity-mapping.agent.uuid-type=char -
quarkus.hibernate-search-orm.coordination.entity-mapping.outbox-event.uuid-type=char
-
名前付き永続性ユニットの場合は、以下を指定します。
-
quarkus.hibernate-search-orm.<persistence-unit-name>.coordination.entity-mapping.agent.uuid-type=char -
quarkus.hibernate-search-orm.<persistence-unit-name>.coordination.entity-mapping.outbox-event.uuid-type=char
-
この変更は手動で適用する必要があります。これは、Red Hat build of Quarkus 3.15 へのアプリケーションの移行 ガイドで説明されている自動更新ではカバーされません。
1.4.3.6. Hibernate ORM、Hibernate Reactive、MongoDB の Panache アノテーションプロセッサーが削除される リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.15 では、Hibernate ORM with Panache、Hibernate Reactive with Panache、または MongoDB with Panache を使用する場合、外部定義エンティティーに io.quarkus:quarkus-panache-common アノテーションプロセッサーが不要になったため、削除されました。
以前のリリースでは、このアノテーションプロセッサーはクラスパスで見つかったときに自動的に実行されていました。ビルドツールでアノテーションプロセッサーのセットをオーバーライドした場合は、明示的に追加する必要がありました。
アノテーションプロセッサーリストから io.quarkus:quarkus-panache-common へのすべての参照を削除します。
この変更を適用するには、Red Hat build of Quarkus 3.15 へのアプリケーションの移行 ガイドに記載されている自動更新を実行します。
Maven ユーザー
pom.xml ファイルから io.quarkus:quarkus-panache-common アノテーションプロセッサーを見つけて削除します。
Gradle ユーザー
Gradle ビルドの場合は、build.gradle ファイルから io.quarkus:quarkus-panache-common アノテーションプロセッサーを見つけて削除します。
dependencies {
annotationProcessor "io.quarkus:quarkus-panache-common"
}
dependencies {
annotationProcessor "io.quarkus:quarkus-panache-common"
}
1.4.4. メッセージング リンクのコピーリンクがクリップボードにコピーされました!
1.4.4.1. Quarkus メッセージングの同期メソッドの実行モードの変更 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.15 では、Quarkus メッセージングエクステンションの 同期メソッド の実行モードがデフォルトでワーカースレッドに設定されるようになりました。以前のバージョンでは、これらのメソッドは Vert.x イベントループ (I/O スレッド) で実行されていました。
たとえば、次の処理メソッドは、Vert.x I/O スレッドではなくワーカースレッドでデフォルトで呼び出されるようになりました。
以前の動作に戻すには、quarkus.messaging.blocking.signatures.execution.mode 設定プロパティーを使用できます。
可能な値は次のとおりです。
-
worker(デフォルト) -
event-loop(以前の動作) -
virtual-thread
@Blocking および @NonBlocking アノテーションを使用して、メソッドごとに実行モードを調整することもできます。
メソッドに @NonBlocking アノテーションを付けることで、そのメソッドが Vert.x イベントループ (I/O スレッド) で呼び出されるようになります。
メッセージングメソッドを確認して、必要な実行モードで実行されることを確認し、必要に応じてコードまたは設定を更新します。
この変更は手動で適用する必要があります。これは、Red Hat build of Quarkus 3.15 へのアプリケーションの移行 ガイドで説明されている自動更新ではカバーされません。
1.4.4.2. SmallRye Reactive Messaging エクステンションの名前が Quarkus Messaging に変更される リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarku 3.15 では、SmallRye Reactive Messaging エクステンションの名前が quarkus-messaging-* に変更され、リアクティブワークロードとブロッキングワークロードの両方をサポートしていることが反映されています。
Maven の再配置が実装されました。この変更を適用するには、Red Hat build of Quarkus 3.15 へのアプリケーションの移行 ガイドに記載されている自動更新を実行します。
プロジェクト内の古いエクステンション名のすべてのインスタンスを新しい名前に置き換えます。
名前を変更したエクステンション
以下のエクステンションの名前が変更されました。
| 以前の名前 | 新しい名前 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
設定ルートも quarkus.smallrye-reactive-messaging. から quarkus.messaging. に更新されました。必要に応じて、古い設定プロパティーに戻すための自動フォールバックメカニズムが用意されています。
エクステンション開発者への影響
エクステンション開発者の場合は、次のデプロイメント関連のアーティファクトも名前が変更されていることに注意してください。
| 以前の名前 | 新しい名前 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
これらの変更を反映するようにコードと設定を更新します。
1.4.5. 可観測性 リンクのコピーリンクがクリップボードにコピーされました!
1.4.5.1. すべての quarkus.opentelemetry.* 設定プロパティーが削除される リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.15 では、quarkus.opentelemetry.* namespace の下にあるすべての設定プロパティーが削除されました。
これらのプロパティーは非推奨となり、バージョン 3.2 および 3.8 では下位互換性のために維持されています。これらは 3.15 で削除されたため、アプリケーションを移行するには次の変更を行う必要があります。
-
quarkus.opentelemetry.namespace のすべてのプロパティーをquarkus.otel.namespace に更新して、OpenTelemetry Java 自動設定規則 に合わせます。 -
サンプラープロパティーを
quarkus.opentelemetry.tracer.samplerからquarkus.otel.traces.samplerに更新します。 -
parent-basedのサンプラープロパティーquarkus.opentelemetry.tracer.sampler.parent-basedが削除されました。サンプラーを親ベースとしてマークするには、以下に示すように、quarkus.otel.traces.samplerプロパティーで直接指定します。
| 古い値 | 新しい値 | 新しい値 (親ベース) |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
これらの新しいプロパティーと値を使用するには、コードと設定を更新します。
この変更は手動で適用する必要があります。これは、Red Hat build of Quarkus 3.15 へのアプリケーションの移行 ガイドで説明されている自動更新ではカバーされません。
1.4.5.2. OpenTelemetry io.opentelemetry.extension.annotations.WithSpan アノテーションが削除される リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.15 では、非推奨のアノテーション io.opentelemetry.extension.annotations.WithSpan が削除されました。新しい io.opentelemetry.instrumentation.annotations.WithSpan アノテーションを使用するようにコードを更新します。
この更新との互換性を確保するために、古いアノテーションに依存する設定またはコードを確認して変更してください。
この変更は手動で適用する必要があります。これは、Red Hat build of Quarkus 3.15 へのアプリケーションの移行 ガイドで説明されている自動更新ではカバーされません。
1.4.5.3. OpenTelemetry における HTTP の新しいセマンティック規約 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.15 では、OpenTelemetry (OTel) SDK がバージョン 1.39.0 に、計装がバージョン 2.5.0 にアップグレードされました。このアップグレードでは、OpenTelemetry HTTP semantic convention stability migration で定義された新しい規則が適用されます。また、非推奨の標準の削除も完了します。これらの規約に依存するコードまたは設定を更新します。
さらに、オプトインがサポートされなくなったため、quarkus.otel.semconv-stability.opt-in システムプロパティーは削除されました。このプロパティーに依存するコードまたは設定を更新します。
この変更は手動で適用する必要があります。これは、Red Hat build of Quarkus 3.15 へのアプリケーションの移行 ガイドで説明されている自動更新ではカバーされません。
1.4.5.4. OpenTelemetry REST クライアントのスパン名の変更 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.15 では、OpenTelemetry (OTel) REST クライアントのスパン名に HTTP リクエストメソッドとパスの両方が含まれるようになりました (例: GET /hello)。以前の REST クライアントのスパン名には、HTTP メソッドのみが含まれていました。
REST クライアントスパンの特定の形式に依存するコードまたは設定を更新します。
この変更は手動で適用する必要があります。これは、Red Hat build of Quarkus 3.15 へのアプリケーションの移行 ガイドで説明されている自動更新ではカバーされません。
1.4.5.5. データベース操作によって生成された OpenTelemetry (OTel) スパン名が変更される リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.15 では、使用するライブラリーの更新により、データベース操作によって生成されるスパン名が変更されました。
たとえば、この変更前は、データベーステーブルを作成するための古いスパン名は DB Query でした。この変更により、新しいスパン名は CREATE TABLE {table_name} になります。
この新しい命名規則により、実行される特定のデータベース操作を正確に反映する、より説明的で意味のあるスパン名が提供されます。
その結果、可観測性ツールでデータベース操作によって生成されたスパンに異なる名前が付けられていることに気付く場合があります。
新しい命名規則に対応するために、古いスパン名に依存するカスタムモニタリング設定、アラート、またはダッシュボードを確認して更新します。
この変更は手動で適用する必要があります。これは、Red Hat build of Quarkus 3.15 へのアプリケーションの移行 ガイドで説明されている自動更新ではカバーされません。
データベーススパンの命名規則とベストプラクティスの詳細は、OpenTelemetry Database Span Semantic Conventions の仕様を参照してください。
1.4.5.6. SmallRye ヘルス設定プロパティーの再配置 リンクのコピーリンクがクリップボードにコピーされました!
以前のバージョンでは、一部の設定プロパティーが quarkus.health 設定ルートの下に誤って配置されていました。
Red Hat build of Quarkus 3.15 では、一貫性を保つために、これらのプロパティーは quarkus.smallrye-health 設定ルートに再配置されました。
-
quarkus.health.extensions.enabledは、quarkus.smallrye-health.extensions.enabledに移動されました。 -
quarkus.health.openapi.includedは、quarkus.smallrye-health.openapi.includedに移動されました。
Red Hat build of Quarkus 3.15 では、古い設定ルートを持つプロパティーは非推奨となり、今後のリリースで削除される予定です。新しいプロパティーのロケーションを使用するようにコードまたは設定を更新します。
この変更は手動で適用する必要があります。これは、Red Hat build of Quarkus 3.15 へのアプリケーションの移行 ガイドで説明されている自動更新ではカバーされません。
1.4.6. セキュリティー リンクのコピーリンクがクリップボードにコピーされました!
1.4.6.1. キーストアとトラストストアのデフォルト形式が変更される リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.15 では、Java Keystroke (JKS) はデフォルトのキーストアおよびトラストストア形式ではなくなりました。
代わりに、Red Hat build of Quarkus は、次のようにファイル拡張子に基づいて形式を決定します。
-
.pem、.crt、.keyファイルは Privacy Enhanced Mail (PEM) 証明書とキーとして読み取られます。 -
.jks、.keystore、.truststoreファイルは JKS キーストアとトラストストアとして読み取られます。 -
.p12、.pkcs12、.pfxファイルは PKCS12 キーストアとトラストストアとして読み取られます。
ファイルでこれらの拡張子のいずれも使用していない場合は、ファイル形式を設定する必要があります。
たとえば、JKS 形式を指定するには、次の設定値を設定します。
-
quarkus.http.ssl.certificate.key-store-file-type=JKS -
quarkus.http.ssl.certificate.trust-store-file-type=JKS
P12 または PEM 形式を指定するには、JKS の代わりに P12 または PEM を設定します。
1.4.6.2. UserInfo が注入されると OpenID Connect (OIDC) UserInfo の取得が強制される リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.15 では、io.quarkus.oidc.UserInfo が REST エンドポイントに注入されると、quarkus.oidc.authentication.user-info-required プロパティーが自動的に true に設定されるようになりました。この変更により、UserInfo は通常、使用が意図されたときに注入されるため、このプロパティーを手動で設定する必要がなくなります。
ただし、複数の OIDC テナントがエンドポイントを保護し、一部のテナントが UserInfo をサポートしていない複雑なセットアップでは、この変更によりテナントの初期化が失敗する可能性があります。これは、UserInfo をサポートしていないテナントが UserInfo を取得するように設定されている場合にのみ発生し、そのテナントによって保護されたリクエストが失敗する可能性があります。
マルチテナントセットアップでこのような失敗を回避するには、UserInfo をサポートしていないテナントに対して、テナント固有の quarkus.oidc.<tenant-id>.authentication.user-info-required プロパティーを false に設定します。これにより、UserInfo をサポートするテナントのみがその取得を強制するようになります。
この変更は手動で適用する必要があります。これは、Red Hat build of Quarkus 3.15 へのアプリケーションの移行 ガイドで説明されている自動更新ではカバーされません。
1.4.7. ツール リンクのコピーリンクがクリップボードにコピーされました!
1.4.7.1. JUnit Pioneer バージョンが強制されなくなる リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.15 では、Quarkus BOM は org.junit-pioneer:junit-pioneer 依存関係のバージョンを強制しなくなりました。プロジェクトでこの依存関係を使用している場合は、ビルドファイルでそのバージョンを明示的に指定する必要があります。
ビルドの問題を回避するには、pom.xml または build.gradle ファイルでバージョンを定義します。次に例を示します。
pom.xml
<properties>
...
<junit-pioneer.version>2.2.0</junit-pioneer.version>
...
</properties>
<properties>
...
<junit-pioneer.version>2.2.0</junit-pioneer.version>
...
</properties>
この変更は手動で適用する必要があります。これは、Red Hat build of Quarkus 3.15 へのアプリケーションの移行 ガイドで説明されている自動更新ではカバーされません。
1.4.8. Web リンクのコピーリンクがクリップボードにコピーされました!
1.4.8.1. Quarkus REST: プログラムによる Web リンクの追加 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.15 では、Quarkus REST (旧称 RESTEasy Reactive) の Hypertext Application Language (HAL) ラッパークラスのシグネチャーが変更され、コレクション内の要素の型が含まれるようになりました。
-
HalCollectionWrapper<T> -
HalEntityWrapper<T>
コード内で HAL ラッパークラスを使用する場所に適切な型引数を追加します。
この変更は手動で適用する必要があります。これは、Red Hat build of Quarkus 3.15 へのアプリケーションの移行 ガイドで説明されている自動更新ではカバーされません。
HAL ラッパーを作成するための新しい推奨方法
HAL ラッパークラスを作成するための推奨アプローチが変更されました。コンストラクターを使用する代わりに、io.quarkus.hal.HalService Bean によって提供されるヘルパーメソッドを使用します。以下に例を示します。
コンストラクターを使用して HAL ラッパーを作成することは引き続き機能しますが、このアプローチは今後のバージョンでは非推奨になる可能性があります。したがって、HalService Bean によって公開されるヘルパーメソッドの使用を開始してください。
詳細は、「Quarkus REST」ガイドの Web リンクのサポート セクションを参照してください。
1.4.8.2. 非 REST パス上の Quarkus REST フィルター リンクのコピーリンクがクリップボードにコピーされました!
以前のリリースでは、要求されたリソースが REST リソースでない場合でも、Quarkus REST (旧称 RESTEasy Reactive) フィルターが実行されていました。Red Hat build of Quarkus 3.15 では、その動作が変更されました。現在、Quarkus REST フィルターは REST リソースでのみ実行されます。
Quarkus REST は、Quarkus の共通 Vert.x レイヤーで動作するようにゼロから構築された Jakarta REST (旧称 JAX-RS) 実装です。完全にリアクティブであり、ビルド時の処理に高度に最適化されています。
フィルターを Quarkus 以外の REST リソースに適用する必要がある場合は、次の例に示すように、NotFoundException のカスタム ExceptionMapper を追加することで適用できます。
この ExceptionMapper を使用すると、Quarkus REST は "Not Found" リソースを処理し、フィルターが期待どおりに実行されるようになります。以前は、フィルターは常に非 REST リソースで実行されていたため、他のエクステンションが "Not Found" シナリオを効果的に処理することが困難でした。
この変更は手動で適用する必要があります。これは、Red Hat build of Quarkus 3.15 へのアプリケーションの移行 ガイドで説明されている自動更新ではカバーされません。
1.4.8.3. Qute REST インテグレーションの更新: TemplateInstance はデフォルトでブロックされる リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.15 では、io.quarkus.qute.TemplateInstance クラスは非ブロッキング型として登録されなくなりました。その結果、Jakarta REST (旧称 JAX-RS) リソースメソッドが TemplateInstance オブジェクトを返す場合、デフォルトでブロッキングと見なされるようになりました。
以前の非ブロッキング動作を復元するには、リソースメソッドに @io.smallrye.common.annotation.NonBlocking アノテーションを適用します。
この変更は、Quarkus REST (旧称 RESTEasy Reactive) エクステンション quarkus-rest を使用するアプリケーションにのみ影響します。
この変更は手動で適用する必要があります。これは、Red Hat build of Quarkus 3.15 へのアプリケーションの移行 ガイドで説明されている自動更新ではカバーされません。
1.4.8.4. RESTEasy Reactive エクステンションの名前が Quarkus REST に変更される リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.15 では、RESTEasy Reactive エクステンションの名前が quarkus-rest-* に変更され、リアクティブワークロードとブロッキングワークロードの両方をサポートしていることが反映されています。
Maven の再配置が実装されました。この変更を適用するには、Red Hat build of Quarkus 3.15 へのアプリケーションの移行 ガイドに記載されている自動更新を実行します。
プロジェクト内の古いエクステンション名のすべてのインスタンスを新しい名前に置き換えます。
新しいエクステンションの名前のほとんどは、次の命名規則に従います。
-
-restで終わるエクステンションは、Quarkus REST (旧称 RESTEasy Reactive) を使用します。 -
-resteasyで終わるエクステンションは、RESTEasy Classic を使用します。
名前を変更したエクステンション
以下のエクステンションの名前が変更されました。
| 以前の名前 | 新しい名前 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
設定ルートも更新されました:
| 古い設定ルート | 新しい設定ルート |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
必要に応じて、古い設定プロパティーに戻すための自動フォールバックメカニズムが用意されています。
エクステンション開発者への影響
エクステンション開発者の場合は、次のデプロイメント関連のアーティファクトも名前が変更されていることに注意してください。
| 以前の名前 | 新しい名前 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1.4.8.5. WebJar Locator エクステンションの名前が Web-dependency-locator に変更される リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Quarkus 3.15 では、quarkus-webjars-locator エクステンションの名前が quarkus-web-dependency-locator に変更され、mvnpm (Maven NPM) と importmaps も含まれるように強化されています。
新しいエクステンション名を使用するようにコードと設定を更新します。
この変更は手動で適用する必要があります。これは、Red Hat build of Quarkus 3.15 へのアプリケーションの移行 ガイドで説明されている自動更新ではカバーされません。
詳細は、Quarkus の Web 依存関係ロケーター ガイドを参照してください。