1.7. 以前のバージョンとの互換性に影響を与える変更
このセクションでは、以前のバージョンの製品バージョンでビルドされたアプリケーションの互換性に影響を与える Red Hat ビルドの Quarkus 2.13 の変更について説明します。
このリリースで導入された重大な変更を確認し、既存のアプリケーションを Red Hat ビルドの Quarkus 2.13 にアップグレードするときに、アップグレード後に引き続き機能することを確認するために、必要なアクションを実行します。
1.7.1. assertj が Red Hat ビルドの Quarkus BOM に含まれなくなりました。 リンクのコピーリンクがクリップボードにコピーされました!
AssertJ バイナリーとの互換性の問題を回避するために、バージョン 2.13 から、AssertJ ライブラリーが Red Hat ビルドの Quarkus BOM アーティファクトから削除されました。以前のリリースでは、古いバージョンの AssertJ でコンパイルされたテストを実行すると、Quarkus BOM に含まれるバージョンで問題が発生していました。
アプリケーションで AssertJ ライブラリーを使用するには、以下の例のように POM で AssertJ のバージョンを手動で定義します。
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.22.0</version>
</dependency>
1.7.2. データベース Dev Services は、同じデータベース名、ユーザー名、およびパスワードを使用します。 リンクのコピーリンクがクリップボードにコピーされました!
今回の更新により、データベース名とログイン認証情報をほとんどのデータベースで同じにします。
PostgreSQL、MariaDB、MySQL、IBM Db2、および H2 データベースは、以下の値を使用します。
-
データベース名:
quarkus -
Username: デフォルトのデータソースまたはデータソースの名前用の
quarkus -
パスワード:
quarkus
Dev Service for Microsoft SQL Server はこれらの変更をサポートしていないため、次の値を使用します。
- データベース名:なし
-
Username:
SA -
Password:
Quarkus123
次の設定パラメーターまたは環境変数を使用して、それをサポートする Dev Services のこれらの値をオーバーライドできます。
| 設定パラメーター | 環境変数 | |
| データベース名 |
|
|
| ユーザー名 |
|
|
| Password |
|
|
詳細は、「Dev Services for Databases」ガイドの Connect To Database Run as a Dev Service セクションを参照してください。
1.7.3. H2 データベースをバージョン 2.1 にアップグレード リンクのコピーリンクがクリップボードにコピーされました!
Red Hat ビルドの Quarkus 2.13 では、インメモリー H2 データベースがバージョン 1.4 から 2.1 にアップグレードされました。
このバージョンのアップグレードにより、H2 は user、value、および timestamp などの新しい予約済みキーワードを追加します。既存の列名でこれらのキーワードをすでに使用する場合は、列名を user_、timestamp_、または value_ に変更するなどして、データベースモデルを調整する必要があります。
または、テストのためにコンテナーアプローチに切り替え、H2 データベースの代わりに実稼働環境で使用しているのと同じデータベースを使用する必要がある場合もあります。
H2 に関する詳細は、H2 データベース のドキュメントを参照してください。
1.7.4. Hibernate ORM MariaDB 方言 10.6 に更新されました。 リンクのコピーリンクがクリップボードにコピーされました!
今回の更新により、Hibernate ORM はデフォルトで方言 10.6 に MariaDB イメージを使用するようになりました。
MariaDB 方言 10.3、10.4、または 10.5 を使用している場合は、application.properties ファイルの quarkus.hibernate-orm.dialect プロパティーを quarkus.hibernate-orm.dialect=org.hibernate.dialect.MariaDB103Dialect に設定してデフォルトを上書きします。
詳細は、Quarkus の Hibernate ORM および Java Persistence API (JPA)の使用 ガイドの Dialect 関連の設定 セクションを参照してください。また、Hibernate ORM の集約され た JavaDocs ドキュメントの パッケージ org.hibernate.dialect パッケージの概要も参照してください。
1.7.5. Hibernate Search quarkus.hibernate-search-orm.* 設定プロパティーの変更 リンクのコピーリンクがクリップボードにコピーされました!
この更新により、quarkus.hibernate-search-orm.enabled 設定プロパティーの動作が変更されます。今回の更新以前は、実行時に Hibernate Search が有効化されていました。今回の更新により、ビルド時に Hibernate Search が有効になります。
今回の更新では、実行時に Hibernate Search を有効にする quarkus.hibernate-search-orm.active 設定プロパティーも追加されています。
./src/main/resources/application.properties などの quarkus.hibernate-search-orm.enabled プロパティーが含まれる設定ファイルを確認し、それらを更新してこれらの変更を反映させます。
同様に、この更新により、QUARKUS_HIBERNATE_SEARCH_ORM_ENABLED 環境変数の動作が変更され、QUARKUS_HIBERNATE_SEARCH_ORM_ACTIVE 環境変数が追加されます。必要に応じて、QUARKUS_HIBERNATE_SEARCH_ORM_ENABLED 環境変数への参照を更新して、これらの変更を反映します。
詳細は、Quarkus "Hibernate Search" の Main Configuration セクションを参照してください。
1.7.6. HTTP 圧縮設定がビルド時に修正されるようになりました リンクのコピーリンクがクリップボードにコピーされました!
Red Hat ビルドの Quarkus 2.13 では、HTTP 圧縮設定の動作が変更されました。今回の更新により、HTTP 圧縮設定はビルド時に設定として配信され、起動時にこれらの設定を上書きすることはできなくなりました。ビルド時に HTTP 圧縮設定を指定すると、要件に応じてアプリケーション設定をさらに最適化できます。
すべての HTTP 応答がデフォルトで圧縮される訳ではありません。quarkus.http.enable-compression 設定プロパティーを true に設定すると、HTTP 圧縮サポートを有効にできます。クライアントが HTTP 圧縮に対応していない場合、応答本文は圧縮されません。
HTTP 圧縮更新の詳細については、新機能、機能拡張、および技術変更 セクションを参照してください。以下の HTTP 更新では、HTTP 応答は設定プロパティーの設定とメディアタイプに基づいて圧縮 されます。
関連情報
- Quarkus HTTP リファレンス ガイド
- Quarkus が RESTEasy リアクティブを使用した REST サービスの作成 ガイド
- Quarkus Using reactive routes guide
1.7.7. quarkus.http.enable-compression=trueの場合、Red Hat ビルドの Quarkus はすべての HTTP 応答を圧縮しません リンクのコピーリンクがクリップボードにコピーされました!
RESTEasy Reactive、リアクティブルート、および静的リソースの場合、HTTP レスポンスは、Content-Type ヘッダーが設定され、値が quarkus.http.compress-media-types プロパティーを使用して設定される圧縮メディアタイプである場合にのみ圧縮されます。
デフォルトでは、次のメディアタイプが圧縮されます。
-
text/html -
text/plain -
text/xml -
text/css -
text/javascript -
application/javascript
1.7.8. @InjectMock アノテーションに追加の修飾子が必要になる場合があります リンクのコピーリンクがクリップボードにコピーされました!
Red Hat ビルドの Quarkus 2.13 では、quarkus-junit5-mockito エクステンションで利用可能な @InjectMock アノテーションは、javax.enterprise.inject.spi.BeanManager#getBeans () メソッドを内部で使用して、@InjectMock インジェクションポイントの対象となる Bean のセットを取得します。
今回の更新以前は、BeanManager#getBeans () メソッドの問題により、修飾子を指定しないと、必要な型に一致する Bean はインジェクションの対象でした。その結果、@Default 以外の修飾子で Bean のモックをインジェクトし、この修飾子を指定しなかったテストが成功しました。
今回の更新により、モックが @Default 以外の修飾子を宣言する Bean が宣言される場合は、修飾子を指定する必要があります。その結果、@Default 以外の修飾子を持つ Bean のモックを注入すると、テストに失敗しますが、この修飾子の値は指定しません。
1.7.9. quarkus.datasource.devservices が quarkus.datasource.devservices.enabledに置き換えられました。 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat ビルドの Quarkus 2.7 で非推奨となった quarkus.datasource.devservices 設定プロパティーが削除されました。
リレーショナルデータベースの Dev Services を無効にするには、代わりに quarkus.datasource.devservices.enabled プロパティーを使用します。
詳細は、Quarkus "Dev Services for Databases" の Enabling / Disabling Dev Services for Database セクションを参照してください。
非推奨の quarkus.http.allow-forwarded および quarkus.http.proxy-address-forwarding 設定プロパティーが削除されました。
リバースプロキシーの背後で Quarkus を実行するには、代わりに quarkus.http.proxy.allow-forwarded および quarkus.http.proxy.proxy-address-forwarding プロパティーを使用します。
quarkus.http.proxy 設定プロパティーは、削除されたプロキシー関連のプロパティーよりもはるかに多くの機能を提供します。
詳細は、Quarkus "HTTP Reference" の Running behind a reverse proxy セクションを参照してください。
1.7.10.1. quarkus.http.root-path @TestHTTPResourceの先頭に付けられた リンクのコピーリンクがクリップボードにコピーされました!
この更新により、quarkus.http.root-path 設定プロパティーの値が @TestHTTPResource アノテーションの URI 値に追加されます。
@TestHTTPResource アノテーションを使用して URI をテストに注入すると、quarkus.http.root-path 設定プロパティーの値が URI よりも優先されます。
たとえば、Hello World アプリケーションで @ApplicationPath ("/hello") と @TestHTTPResource ("index.html") を定義し、quarkus.http.root-path=/root を設定すると、アプリケーションの名前を http://localhost:8080/root/hello と設定します。
詳細は以下を参照してください。
- アプリケーションのテスト ガイドの URI の注入 セクション。
- HTTP リファレンス の コンテキストパスの設定 セクション
1.7.11. Red Hat は Mandrel 22.3 用の Java 11 ベースのイメージを提供しません。 リンクのコピーリンクがクリップボードにコピーされました!
今回の更新により、Red Hat は Mandrel 22.3 用の Java 11 ベースの Red Hat ビルドの Quarkus ネイティブビルダーイメージを提供しません。
アプリケーションをネイティブ実行可能ファイルにコンパイルするには、以前の Java 11 ベースのイメージを、Java 17 ベースの Red Hat ビルドの Quarkus ネイティブビルダーイメージ に置き換えます。
Java 17 ベースの Red Hat ビルドの Quarkus ネイティブビルダーイメージは、ほとんどの Java 11 アプリケーションと互換性があり、ほとんどの実稼働環境用のネイティブ実行可能ファイルビルドで機能します。ただし、まれに、ビルドが失敗する場合があります。このような場合の 1 つは、ネイティブ実行可能ファイルのビルドが増分またはマルチステージのビルドプロセスの一部である場合です。
Red Hat は、Quarkus コミュニティーの Java 11 ベースの Mandrel 22.3 ベースイメージのテクニカルサポートを提供しません。
1.7.13. quarkus-undertow-websockets エクステンションの削除 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat ビルドの Quarkus 2.13 では、コミュニティーバージョンの io.quarkus:quarkus-undertow-websockets エクステンションが削除されました。Red Hat は、Red Hat ビルドの Quarkus 2.7 ライフサイクルの終了時にのみ、バグ修正とサポートを提供します。io.quarkus:quarkus-undertow-websockets エクステンションの代わりに、Eclipse Vert.x の WebSockets プロトコル実装に基づく WebSockets Client (io.quarkus:quarkus-websockets-client)および WebSockets Server (io.quarkus:quarkus-websockets)エクステンションを使用できます。
詳細は、Quarkus Using WebSockets ガイドの Creating the Maven project セクションを参照してください。
1.7.15. RESTEasy Reactive が新しいデフォルトの REST レイヤーです。 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat ビルドの Quarkus を使用して新しいアプリケーションを作成すると、quarkus-resteasy ではなく、quarkus-resteasy-reactive プロパティーがデフォルトで選択されるようになりました。
RESTEasy Reactive は、従来のブロックワークロードとリアクティブワークロードの両方をサポートします。エンドポイントのメソッドの戻りタイプに応じて、RESTEasy Reactive は適切なパラダイムを選択します。
以下に例を示します。
-
MyEntityを返すと、エンドポイントがブロックされます。 -
Uni<MyEntity> を返すと、エンドポイントをリアクティブにします。
詳細は、Quarkus Writing REST Services with RESTEasy Reactive ガイドを参照してください。
1.7.16. SmallRye GraphQL API エンドポイントがデフォルトで @Singleton Bean として動作するようになる リンクのコピーリンクがクリップボードにコピーされました!
今回の更新以前は、@GraphQLApi エンドポイントに割り当てられたデフォルトのスコープは @Dependent でした。今回の更新により、REST エンドポイントに合わせて、スコープアノテーションを明示的にエンドポイントに追加しない限り、@GraphQLApi は @Singleton Bean として機能します。
1.7.17. SmallRye Stork エクステンション設定プロパティーが Quarkus namespace に移動 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat ビルドの Quarkus 2.13 では、quarkus. 名前空間で SmallRye Stork エクステンションのプロパティーを設定する必要があります。
この更新の前は、stork.my-service 接頭辞を持つプロパティーを使用して、SmallRye Stork エクステンションを設定していました。今回の更新により、これらのプロパティーの前に quarkus. stork.my-service などのように付ける必要があります。
以下の例は、利用可能な SmallRy Stork 設定プロパティーの一部を使用した SmallRye Stork エクステンションの設定例を示しています。
-
quarkus.stork.my-service.service-discovery.type=consul -
quarkus.stork.my-service.service-discovery.consul-host=localhost -
quarkus.stork.my-service.service-discovery.consul-port=8500 -
quarkus.stork.my-service.load-balancer.type=least-response-time -
quarkus.stork.my-service.load-balancer.use-secure-random=true
SmallRye Stork とその設定プロパティーの詳細は、Quarkus コミュニティー または SmallRye Stork ドキュメントの すべての設定オプション を参照してください。
1.7.18. 一部の OpenTracing ライブラリーコードが SmallRye OpenTracing に移動しました リンクのコピーリンクがクリップボードにコピーされました!
非推奨の OpenTracing 機能に関連する OpenTracing ライブラリーコードは、コードが OpenTracing コミュニティーによって維持されなくなったため、SmallRye OpenTracing リポジトリーに移行されました。このコードの Java パッケージは変更しましたが、コードは変わりません。
ただし、移行されたコードはプライベート API で設定され、これらの API の一部を使用していない場合は、この変更はアプリケーションには影響しません。変更が破損しないようにするには、OpenTracing ライブラリーの上に構築された API を使用します。
この変更は、opentracing-contrib ライブラリーからパブリックでない API を使用するアプリケーションにのみ影響します。org.eclipse.microprofile.opentracing.Traced アノテーションで API を使用するユーザーは影響を受けません。
今後の Quarkus バージョンで、OpenTracing テクノロジーが OpenTelemetry に置き換えることが予想されます。Quarkus アプリケーションでのトレースと Telemetry に推奨されるテクノロジーが OpenTelemetry になりました。
1.7.19. OIDC web-app アプリケーションのパス固有の認証のサポートが追加されました。 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat ビルドの Quarkus 2.13 では、OpenID Connect (OIDC) Web アプリケーション用のパスベースの認証が導入されました。
今回の更新により、Quarkus アプリケーションが OIDC 認可コードメカニズムを含む複数の認証メカニズムを組み合わせる場合は、quarkus.http.auth.permission.<policy-name>.auth-mechanism=code ではなく、application.property ファイルで quarkus.http.auth.permission.<policy-name>.auth-mechanism= code プロパティーを指定する必要があります。
この更新の前は、このような JWT ベアラートークンと OIDC 認可コードフローメカニズムの組み合わせはできませんでした。
たとえば、quarkus-smallrye-jwt エクステンションを使用して、/management エンドポイントへの要求を認証するための JWT bearer-token 認証メカニズムと、/web-app エンドポイントへの要求を認証する OIDC 承認コードフローメカニズムを提供する場合は、次のプロパティーを設定します。
-
quarkus.http.auth.permission.webapp.paths=/web-app -
quarkus.http.auth.permission.webapp.policy=authenticated -
quarkus.http.auth.permission.webapp.auth-mechanism=code -
quarkus.http.auth.permission.management.paths=/management -
quarkus.http.auth.permission.management.policy=authenticated -
quarkus.http.auth.permission.management.auth-mechanism=bearer
1.7.20. OpenTelemetryClientFilter テレメトリーは、REST クライアントに対して強制的に有効にされません リンクのコピーリンクがクリップボードにコピーされました!
今回の更新以前は、その クライアントでプログラム クライアントの Spans を作成できるようにする必要がありました。
javax.ws.rs.client.Client Client ()フィルターを作成する際に、OpenTelemetry Tracing が javax.ws.rs.client.ClientBuilder.newClient ()
Red Hat ビルドの Quarkus 2.13 では、プログラムまたは注入された REST クライアントの作成時に、ユーザーが OpenTelemetryClientFilter を明示的に登録する必要がないソリューションが導入されています。REST Client Reactive が使用する基盤となる Vert.x クライアントは、OpenTelemetry インストルメンテーションを追加し、クライアントの作成を簡素化するようになりました。