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


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

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

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

1.7.1. コア

1.7.1.1. Stork ロードバランサー設定の変更

Stork ロードバランサーを設定する際に、以前の設定名 stork."service-name".load-balancer および quarkus.stork."service-name".load-balancer は使用できなくなりました。代わりに、構成設定には quarkus.stork."service-name".load-balancer.type を使用してください。

1.7.1.2. OkHttp と Okio の依存関係管理の更新

OkHttp と Okio は Quarkus プラットフォーム BOM から削除され、それらのバージョンは強制されなくなり、古くなった依存関係に関連する問題に対処しました。この変更はテストフレームワークの依存関係に影響し、ランタイムの依存関係を合理化します。これらの依存関係を使用する開発者は、ビルドファイルでバージョンを指定する必要があります。さらに、Infinispan の強力な Dev Services サポートが利用可能になったため、quarkus-test-infinispan-client アーティファクトは削除されました。

1.7.1.3. Java バージョン要件の更新

Red Hat build of Quarkus のこのバージョンから、以前のバージョンで非推奨となった Java 11 のサポートが削除されました。Java 17 もサポートされていますが、現在は Java 21 が推奨バージョンです。

1.7.1.4. RESTEasy Reactive のコレクションにおける JAXB の制限

Red Hat build of Quarkus では、RESTEasy Reactive を Java Architecture for XML Binding (JAXB) と共に使用しても、REST メソッドでコレクション、配列、マップをパラメーターまたは戻り値の型として使用することはサポートされません。JAXB のこの制限を克服するには、これらの型を @XmlRootElement アノテーションが付けられたクラス内にカプセル化します。

1.7.1.5. ビルド時に @StaticInitSafe を必須指定する

静的初期化フェーズでは、Red Hat build of Quarkus が CDI Bean に注入する設定を収集します。収集された値は実行時の初期化の値と比較され、不一致が検出されるとアプリケーションの起動は失敗します。Red Hat build of Quarkus 3.8 では、@io.quarkus.runtime.annotations.StaticInitSafe アノテーションを使用して設定オブジェクトにアノテーションを付け、注入された設定についてユーザーに通知できるようになりました。

  • ビルド時に設定される
  • 変更できない
  • 実行時に使用しても安全であり、設定の不一致で Red Hat build of Quarkus の起動が失敗しないように指示します。

1.7.1.6. Qute: デフォルトでタグテンプレートを分離して実行する

テンプレート内のユーザータグはデフォルトで分離して実行されるようになり、呼び出し元のテンプレートのコンテキストへのアクセスが制限されます。この更新により、タグテンプレート内のデータ処理が変更され、現在の機能に影響する可能性があります。この分離を回避し、親コンテキストへのアクセスを維持するには、タグ呼び出しに _isolated=false または _unisolated を含めます (例: # itemDetail item showImage=true _isolated=false)。このアプローチにより、タグは以前と同様に親コンテキストからデータにアクセスできるようになります。この変更により、親コンテキストからタグへの意図しないデータの公開が最小限に抑えられ、テンプレートデータの整合性が向上します。ただし、共有コンテキストアクセスに依存する既存のテンプレートの更新が必要になる可能性があり、これはこの分離メカニズムに慣れていないユーザーに影響を与える可能性のある大きな変更となります。

1.7.1.7. Qute: 汚染問題の解決

ResultNode クラスはインターフェイスではなく抽象クラスに更新され、パブリック API にあるにもかかわらずユーザーが実装すべきではありません。Qute API は、デフォルトで CompletionStage 実装を java.util.concurrent.CompletableFutureio.quarkus.qute.CompletedStage に制限するようになりました。この制限は、-Dquarkus.qute.unrestricted-completion-stage-support=true で変更できます。

1.7.1.8. quarkus-rest-client エクステンションの名前が quarkus-resteasy-client に変更になる

Red Hat build of Quarkus 3.8 では、次の quarkus-rest-client エクステンションの名前が変更されます。

Expand
以前の名前新しい名前

quarkus-rest-client

quarkus-resteasy-client

quarkus-rest-client-mutiny

quarkus-resteasy-client-mutiny

quarkus-rest-client-jackson

quarkus-resteasy-client-jackson

quarkus-rest-client-jaxb

quarkus-resteasy-client-jaxb

quarkus-rest-client-jsonb

quarkus-resteasy-client-jsonb

1.7.1.9. @TestHTTPResource が注入されたときに URI 検証を削除する

@TestHTTPResource アノテーションはパスパラメーターをサポートするようになりました。URI 形式に準拠していないため、URI 文字列としての検証は適用されなくなりました。

1.7.1.10. 依存関係の調整を伴う GraalVM SDK 23.1.2 の更新

Red Hat build of Quarkus 3.8 では、GraalVM SDK バージョンが 23.1.2 に更新GraalVM の置換を必要とするエクステンションを使用する開発者は、必要なクラスにアクセスするために org.graalvm.sdk:graal-sdk から org.graalvm.sdk:nativeimage に切り替える必要があります。org.graalvm.js:js を使用する場合は、この依存関係をコミュニティーバージョンの org.graalvm.polyglot:js-community に置き換えます。エンタープライズバージョンの場合は、この依存関係を org.graalvm.polyglot:js に置き換えます。graal-sdk の調整は quarkus update によって自動化されます。ただし、js 依存関係の変更は手動で行う必要があります。可能性は非常に低いですが、この変更は以下に依存しているユーザーに影響を与える可能性があります。

  • org.graalvm.sdk:collections
  • org.graalvm.sdk:word

1.7.1.11. QuarkusComponentTest のさまざまな調整

このリリースでは、QuarkusComponentTest にいくつかの調整が行われました。これはまだ実験段階であり、Red Hat build of Quarkus ではサポートされていません。この実験的なステータスは、受け取ったフィードバックを反映して API がいつでも変更する可能性があることを示しています。

QuarkusComponentTestExtension が不変になったため、簡略化されたコンストラクター QuarkusComponentTestExtension(Class…) または QuarkusComponentTestExtension.builder() メソッドを介してプログラムによる登録が必要になりました。テストインスタンスのライフサイクル (Lifecycle#PER_METHOD (デフォルト) または Lifecycle#PER_CLASS) は、CDI コンテナーの開始と停止のタイミングを決定します。PER_METHOD は各テストの前にコンテナーを開始し、その後に停止しますが、PER_CLASS はすべてのテストの前にコンテナーを開始し、すべてのテストの後に停止します。これは、コンテナーが常にすべてのテストの前に起動し、すべてのテストの後に停止していた以前のバージョンからの変更点を表しています。

1.7.2. データ

1.7.2.1. Hibernate ORM が 6.4 にアップグレード

Red Hat build of Quarkus 3.8 では、Hibernate Object-Relational Mapping (ORM) がバージョン 6.4 にアップグレードされ、次の重大な変更が導入されました。

  • 一部の古いデータベースバージョンとの互換性は失われます。サポートされているバージョンの詳細は、サポートされている方言 を参照してください。
  • 数値リテラルは、Jakarta Persistence 3.2 で定義されたとおりに解釈されるようになりました。

詳細は、Hibernate ORM 6.4 移行 ガイドを参照してください。

1.7.2.2. Hibernate Search が 7.0 にアップグレード

Red Hat build of Quarkus 3.8 では、Hibernate Search がバージョン 7.0 にアップグレードされ、次の重大な変更が導入されました。

  • quarkus.hibernate-search-orm.coordination.entity-mapping.outbox-event.uuid-type および quarkus.hibernate-search-orm.coordination.entity-mapping.agent.uuid-type 設定プロパティーで受け入れられる値が変更されました。

    • uuid-binary が非推奨となり、binary が推奨される
    • uuid-char が非推奨となり、char が推奨される
  • quarkus.hibernate-search-orm.elasticsearch.query.shard-failure.ignore プロパティーのデフォルト値が true から false に変更になりました。つまり、検索操作中に少なくとも 1 つのシャードが失敗すると、Hibernate Search は例外を出力するようになりました。以前の動作に戻すには、この設定プロパティーを true に設定します。

    注記

    複数のバックエンドを定義する場合は、Elasticsearch バックエンドごとにこの設定プロパティーを設定する必要があります。

  • 正規表現述語 内の補数 Operator (~) は、代替手段がないため削除されました。
  • Hibernate Search の依存関係のアーティファクト ID には -orm6 接尾辞が付かなくなりました。たとえば、アプリケーションは、hibernate-search-mapper-orm-orm6 ではなく hibernate-search-mapper-orm モジュールに依存するようになりました。

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

1.7.2.3. SQL Server Dev Services が 2022-latest にアップグレード

Dev Services for SQL Server のデフォルトイメージが mcr.microsoft.com/mssql/server:2019-latest から mcr.microsoft.com/mssql/server:2022-latest に更新されました。

以前のバージョンを好むユーザーは、Red Hat build of Quarkus の「データソースの設定」ガイドの 参照 セクションに詳細が記載されている config プロパティーを使用して、代替を指定できます。

1.7.2.4. Flyway へのアップグレードにより、Oracle ユーザーの依存関係がさらに追加される

Red Hat build of Quarkus 3.8 では、Flyway エクステンションが Flyway 9.20.0 にアップグレードされ、Oracle ユーザー向けに追加の依存関係 flyway-database-oracle が提供されます。

Oracle ユーザーは、flyway-database-oracle 依存関係を含めるように pom.xml ファイルを更新する必要があります。これを行うには、次の手順を実行します。

<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-database-oracle</artifactId>
</dependency>
Copy to Clipboard Toggle word wrap

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

1.7.3. ネイティブ

1.7.3.1. Kafka エクステンションにおける Strimzi OAuth サポートの問題

quarkus-bom の Kafka エクステンションの Strimzi OAuth サポートでは、io.strimzi:strimzi-kafka-oauth バージョン 0.14.0 が使用されるようになり、ネイティブビルドの失敗につながる既知の問題が発生しています。Substitution target for `io.smallrye.reactive.kafka.graal.Target_com_jayway_jsonpath_internal_DefaultsImpl is not loaded というエラーは、プロジェクトのクラスパスに io.strimzi:kafka-oauth-common を追加することで回避できます。

1.7.4. 可観測性

1.7.4.1. @AddingSpanAttributes アノテーションが追加される

Red Hat build of Quarkus 3.8 で Opentelemetry (oTel) インストルメンテーションを使用する場合は、io.opentelemetry.instrumentation.annotations.AddingSpanAttributes アノテーションを使用して、Context Dependency Injection (CDI) 対応の Bean 内のメソッドにアノテーションを付けることができるようになりました。これにより、新しいスパンは作成されませんが、現在のスパン内の属性にアノテーション付きメソッドパラメーターが追加されます。

注記

誤ってメソッドに @AddingSpanAttributes アノテーションと @WithSpan アノテーションの両方を付けた場合は、@WithSpan アノテーションが優先されます。

詳細は、Quarkus の「OpenTelemetry の使用」ガイドの CDI セクションを参照してください。

1.7.4.2. quarkus-smallrye-metrics エクステンションはサポート対象外に

Red Hat build of Quarkus 3.8 では、quarkus-smallrye-metrics エクステンションはサポートされなくなりました。現在、コミュニティーのエクステンションとしてのみ利用可能です。実稼働環境での使用は推奨されません。

Red Hat build of Quarkus 3.8 から、quarkus-smallrye-metrics は完全にサポートされている quarkus-micrometer エクステンションに置き換えられました。

1.7.4.3. quarkus-smallrye-opentracing エクステンションがサポート対象外に

Red Hat build of Quarkus 3.8 では、SmallRye OpenTracing はサポートされなくなりました。分散トレーシングを引き続き使用するには、アプリケーションを SmallRye OpenTelemetry に移行します。これは、今回のリリースで完全にサポートされ、テクノロジープレビュー機能ではなくなりました。引き続き quarkus-smallrye-opentracing を使用する必要がある場合は、groupId を更新し、バージョンを手動で指定して、Quarkiverse のエクステンションを使用するようにアプリケーションを調整します。

1.7.4.4. スケジューラーと OpenTelemetry Tracing エクステンションのリファクタリング

Red Hat build of Quarkus 3.8 では、OpenTelemetry Tracing と quarkus-scheduler エクステンションの統合がリファクタリングされました。

この更新の前は、@Scheduled メソッドにのみ新しい io.opentelemetry.api.trace.Span クラスがあり、トレースを有効にすると自動的に関連付けられました。つまり、quarkus.scheduler.tracing.enabled 設定プロパティーが true に設定され、quarkus-opentelemetry エクステンションが利用可能な場合です。

この 3.8 リリースでは、トレースを有効にすると、プログラムによってスケジュールされたジョブも含め、スケジュールされたすべてのジョブに Span が自動的に関連付けられます。各スケジュールされたメソッドの一意のジョブ識別子は、生成されるか、io.quarkus.scheduler.Scheduled#identity 属性を設定するか、JobDefinition メソッドを使用して指定されます。この更新の前は、スパン名は <simpleclassname>.<methodName> 形式に従っていました。

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

1.7.5. セキュリティー

1.7.5.1. mTLS と HTTP 制限によるセキュリティー強化

mTLS クライアント認証 (quarkus.http.ssl.client-auth) が required に設定されていると、Red Hat build of Quarkus は、安全な HTTPS 要求のみが受け入れられるように、プレーン HTTP ポートを自動的に無効にします。プレーン HTTP を有効にするには、quarkus.http.ssl.client-authrequest に設定するか、quarkus.http.ssl.client-auth=requiredquarkus.http.insecure-requests=enabled の両方を設定します。

1.7.5.2. JWT エクステンションにより、不要な Reactive Routes の依存関係が削除される

JWT エクステンションは、Reactive Routes エクステンションに推移的に依存しなくなりました。アプリケーションが JWT と Reactive Routes の両方の機能を使用しているが、Reactive Routes への明示的な依存関係を宣言していない場合は、この依存関係を追加する必要があります。

1.7.5.3. Keycloak Authorization で keycloak-adapter-core の依存関係が削除される

quarkus-keycloak-authorization エクステンションには、Keycloak 22.0.0 への更新とエクステンションの機能との関連性がなくなったため、org.keycloak:keycloak-adapter-core 依存関係が含まれなくなりました。将来の Keycloak バージョンでは、Keycloak Java アダプターコードが削除される予定です。アプリケーションにこの依存関係が必要な場合は、プロジェクトの pom.xml に手動で追加します。

RESTEasy Classic アプリケーションのテナント OIDC 設定を解決するために、Context and Dependency Injection (CDI) アノテーションとインターセプターを使用できなくなりました。

CDI インターセプターの前に実施されるセキュリティーチェックと認証を必要とするチェックがトリガーされるため、CDI インターセプターを使用して複数の OIDC プロバイダー設定識別子を解決することは機能しなくなりました。

代わりに @Tenant アノテーションまたはカスタム io.quarkus.oidc.TenantResolver を使用してください。

詳細は、Quarkus の「OIDC マルチテナンシーの使用」ガイドの アノテーションによる解決 セクションを参照してください。

Red Hat build of Quarkus 3.8 では、OIDC テナントへのバインド OpenID Connect (OIDC) 機能に、quarkus.oidc.Tenant ではなく quarkus.oidc.TenantFeature アノテーションを使用する必要があります。

quarkus.oidc.Tenant アノテーションがテナント設定の解決に使用されるようになりました。

1.7.5.6. セキュリティープロファイルの柔軟性の向上

Red Hat build of Quarkus 3.8 では、HTTP 権限とロールのランタイム設定が可能になり、プロファイル全体で柔軟なセキュリティー設定が可能になります。これにより、ネイティブ実行可能ファイルがビルド時のセキュリティー設定にロックされる問題が解決されます。セキュリティーはプロファイルごとに動的に調整できるようになり、JVM モードとネイティブモードの両方に適用できます。

1.7.6. Standards

1.7.6.1. GraphQL ディレクティブの適用における修正

アノテーションベースの GraphQL ディレクティブの適用が修正され、宣言されているスキーマ要素タイプにのみ適用されるようになりました。

たとえば、ディレクティブが GraphQL 要素タイプ FIELD に適用するように宣言されているにもかかわらず、誤って別の要素タイプに適用された場合、そのディレクティブは、適用できないはずの要素のスキーマに引き続き表示され、無効なスキーマになります。この問題は修正され、ディレクティブの使用法は適用性宣言に照らしてチェックされるようになりました。

このようにディレクティブが誤って適用されると、それらはスキーマに表示されなくなり、Red Hat build of Quarkus 3.8 はビルド中に警告を記録します。

1.7.7. OpenAPI は POJO とプリミティブのコンテンツタイプのデフォルトを標準化する

この変更により、@ContentType アノテーションが提供されていない場合に OpenAPI ドキュメントを生成するためのデフォルトのコンテンツタイプが標準化されました。以前は、デフォルトのコンテンツタイプは、RestEasy Reactive、RestEasy Classic、Spring Web、OpenAPI などのエクステンションごとに異なっていました。たとえば、OpenAPI は常に JSON をデフォルトとして使用していましたが、RestEasy はオブジェクト型には JSON を使用し、プリミティブ型にはテキストを使用していました。現在、すべてのエクステンションは統一されたデフォルト設定を採用しており、一貫性が確保されています。

  • プリミティブ型 は、一律に text/plain に設定されるようになりました。
  • 複雑な POJO (Plain Old Java Object) タイプ のデフォルトは application/json です。

この統一により、エクステンション間の動作は一貫しているものの、プリミティブでは text/plain を使用し、POJO では application/json を使用するなど、データのタイプに基づいて適切に区別されるようになります。このアプローチは、すべての Java タイプに同じコンテンツタイプが使用されることを意味するのではなく、すべてのエクステンションがデータの性質に合わせて同じ方法でコンテンツタイプを処理することを意味します。

1.7.8. Web

1.7.8.1. REST クライアントでの SSE 処理の改善

Red Hat build of Quarkus 3.8 では、REST Client の Server-Sent Events (SSE) 機能が強化され、完全なイベントの返却とフィルタリングが可能になりました。REST Client のこれらの更新と新しい説明により、開発者はリアルタイムデータストリームの管理における制御と柔軟性が向上します。

1.7.8.2. Reactive Routes 依存関係の手動追加

バージョン 3.8 までは、Red Hat build of Quarkus SmallRye JWT は quarkus-reactive-routes を自動的に組み込んでいましたが、この機能はバージョン 3.8 以降では廃止されました。継続的な機能を確保するには、ビルド設定に依存関係として quarkus-reactive-routes を手動で追加します。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat