第3章 新機能および変更された機能

本セクションでは、Red Hat ビルドの Quarkus 1.11.6 で導入された新機能および変更について概説します。

3.1. code.quarkus.redhat.com プロジェクトジェネレーター

Red Hat では、新しい Web ベースのプロジェクトジェネレーターを導入しています。これを使用して、Red Hat ビルドの Quarkus の最新リリースに基づいて、アプリケーション用のプロジェクトを作成できます。プロジェクトジェネレーターは、Quarkus を使用した新しいアプリケーションの開発が容易となる複数の機能を提供します。以下に例を示します。

  • プロジェクトに追加するエクステンションを選択するための Web ブラウザーベースのインターフェース。
  • 選択したビルドツールに基づくプロジェクトディレクトリー構造の自動生成。
  • アプリケーションで使用するために選択したエクステンションの自動インポートおよび設定。
  • アプリケーションのスターターコードの自動生成。

プロジェクトジェネレーターは、code.quarkus.redhat.com でアクセスできます。Red Hat は、code.quarkus.redhat.com を使用した Maven ベースのアプリケーションプロジェクトの作成のみをサポートする点に留意してください。

code.quarkus.redhat.com の使用方法についての詳細は、「code.quarkus.redhat.com を使用した Quarkus Maven プロジェクトの作成」 を参照してください。

3.2. OpenJDK 11 Universal Base Image を Source-to-Image ビルドの新しいデフォルトベースイメージとして使用

Red Hat ビルドの Quarkus 1.11 は、Source-to-Image (S2I) ツールを使用したアプリケーションの Red Hat OpenShift Container Platform へのビルドおよびデプロイに対して、OpenJDK 11 Universal Base Image の使用をサポートしています。Red Hat Ecosystem Catalog から最新バージョンのイメージをダウンロードできます。

3.3. Prometheus を使用して Quarkus アプリケーションをモニタリングする新しい Micrometer メトリクスエクステンション

Red Hat ビルドの Quarkus 1.11 では、Micrometer ライブラリーを使用してランタイムアプリケーションのメトリクスを収集し、アプリケーションを Prometheus でモニタリングするための新しいエクステンションが導入されました。エクステンションを使用すると、アプリケーションから、そしてアプリケーションが使用するエクステンションからも、ランタイムアプリケーションメトリクスを収集し、Micrometer と統合することができます (Apache Kafka の Quarkus エクステンション、HTTP、Resteasy など)。Red Hat は、Quarkus Micrometer メトリクスの実稼働環境での使用をサポートします。『Quarkus アプリケーションでのメトリクスの収集』 を参照してください。

3.4. 複数の Hibernate ORM 永続ユニットへのサポート

Red Hat ビルドの Quarkus 1.11 では、Hibernate ORM を使用してアプリケーションでデータソースを管理する際に、複数のデータソースを永続ユニットとして定義することができます。詳細は、『Quarkus アプリケーションでのデータソースの設定』「複数の JDBC データソースの設定」 を参照してください。

3.5. 生成された OpenAPI スキーマの保存へのサポート

Red Hat ビルドの Quarkus 1.11 では、Quarkus Smallrye OpenAPI エクステンションを使用してアプリケーションに生成された OpenAPI スキーマを保存するためのサポートが導入されました。quarkus-smallrye-openapi_quarkus.smallrye-openapi.store-schema-directory の値は、アプリケーションのコンパイル時に OpenAPI スキーマを含む YAML ファイルと JSON ファイルが保存されるディレクトリーのパスに設定できます。例:

application.properties

quarkus-smallrye-openapi_quarkus.smallrye-openapi.store-schema-directory=/path/to/schema/directory

3.6. Quarkus Quartz エクステンションでの ArC コンテキストおよび依存性注入のサポート

Quarkus Quartz エクステンションを使用して、コンテキストおよび依存性注入に依存する定期的なタスクをスケジュールできるようになりました。詳細は、Quarkus Quartz エクステンションに関する コミュニティードキュメント を参照してください。

3.7. SmallRye Reactive Messaging のバージョン 2.7.1 へのアップグレード

Red Hat ビルドの Quarkus 1.11 では、AMQP および Apache Kafka の Quarkus Reactive Messaging エクステンションで使用される SmallRye Reactive Messaging API がバージョン 2.7.1 にアップグレードされました。詳細は、SmallRye Reactive Messaging API ドキュメント を参照してください。

3.8. Mutiny reactive API のバージョン 0.12.5 へのアップグレード

Red Hat ビルドの Quarkus 1.11 では、Quarkus のリアクティブエクステンションで使用される Mutiny イベント駆動型ライブラリーがバージョン 0.12.5 にアップグレードされました。

3.9. リアクティブルートでの Bean Validation のサポート

Red Hat ビルドの Quarkus 1.11 におけるリアクティブルートのエクステンションは、Java Bean の制約検証をサポートします。

3.10. Quarkus REST アプリケーションのデフォルトの JSON シリアライゼーションおよびデシリアライゼーションツールとしての Jackson への変更

警告

この変更により、アプリケーションを Red Hat ビルドの Quarkus 1.7 から Red Hat ビルドの Quarkus 1.11 にアップグレードする際に、アプリケーションの REST エンドポイントが破損する可能性があります。アプリケーションのアップグレード後にオブジェクトマッピングが正しく機能するように、アプリケーションコードを更新します。

Red Hat ビルドの Quarkus 1.11 リリースでは、Jackson は Quarkus REST JSON エクステンションによって使用されるデフォルトの ObjectMapper ツールとして設定されます。コンテキストと依存性注入を使用して、Jackson をアプリケーションの REST コントローラークラスに注入し、REST アプリケーションデータの JSON 形式への変換および JSON 形式からの変換をサポートすることができます。Red Hat ビルドの Quarkus 1.11 の Jackson で DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES 機能を無効化することで発生する互換性を破る変更に関する詳細は、「Red Hat ビルドの Quarkus 1.7 から Red Hat ビルドの Quarkus 1.11 へのアプリケーションのアップグレード」 を参照してください。

3.11. アプリケーション以外のユーザーインターフェースの有効化の新しいオプション (実稼働モードでアプリケーションを起動する場合)

Red Hat ビルドの Quarkus 1.11 では、-Dquarkus.<ui-name>.always-include=true を指定して、アプリケーションを実稼働モードで起動する場合に JAR の一部であるユーザーインターフェースを有効化することができます。このオプションは、以下のインターフェースで利用できます。

  • Swagger UI
  • OpenAPI
  • SmallRye Health UI
  • GraphQL UI

たとえば、SwaggerUI インターフェースが含まれる REST アプリケーションに JAR を作成すると、アプリケーションの起動時にこのインターフェースはデフォルトで無効になります。アプリケーションの起動時にインターフェースを有効にするために、起動コマンドに -Dquarkus.swagger-ui.always-include=true オプションを追加することができます。

java -jar -Dquarkus.swagger-ui.enable=true target/<application-name>-1.0.0-SNAPSHOT-runner.jar

<application-name> は JAR の名前に置き換える必要があることに注意してください。

3.12. Quarkus REST クライアントのセキュリティー更新による CVE-2020-25633 の解決

Red Hat ビルドの Quarkus 1.11 で利用可能な quarkus-rest-client エクステンションは、CVE-2020-25633 セキュリティー問題を解決する更新の一部として導入された、MicroProfile REST クライアントおよび JAX-RS クライアントによる WebApplicationException の処理の変更の影響を受けます。

セキュリティー更新により、RESTEasy バージョン 4.5.9 では、クライアントアプリケーションが WebApplicationException を返す際の Response の処理方法が変更されます。4.5.9 の更新前は、ローカルドメインのリモートサーバーから送信された Response には、承認されていないユーザーがアクセスする可能性があるリモートサーバー (Cookie など) に関する機密情報が含まれていました。

RESTEasy 4.5.9 の更新により、Response の内容の処理方法が変更されます。ローカルサーバーが Response を受け取ると、RESTEasy は Response を保存する前にすべての機密コンテンツを削除しますが、ローカルサーバーが必要に応じて Response の元のコンテンツにアクセスできる方法を保持します。

この例外処理の変更により、ローカルサーバーに機密性の高いコンテンツを格納することに関連するセキュリティーリスクを回避できるようになりましたが、RESTEasy バージョン 4.5.9 を使用するクライアントは引き続き JAX-RS 仕様と互換性を保つことができます。

RESTEasy バージョン 4.5.9 への Response コンテンツの保存の変更に関する詳細は、RESTEasy 4.5.9 ドキュメントの WebApplicationException のセクションを参照してください。

3.13. ネイティブ実行可能ファイルをコンパイルするためのデフォルトの Mandrel ベースイメージのバージョン 20.3 へのアップグレード

Red Hat ビルドの Quarkus 1.11 では、ネイティブ実行可能ファイルをコンパイルするためのデフォルトのベースイメージが Mandrel 20.3 にアップグレードされます。その結果、Quarkus アプリケーションのネイティブ実行可能ファイルへのコンパイルquarkus.native.builder-image 設定プロパティー のデフォルト値が、quay.io/quarkus/ubi-quarkus-mandrel:20.3-java11 に変更されます。

3.14. バージョン 5.x にアップグレードされた Quarkus Kubernetes クライアント

重要

Red Hat は、実稼働環境で Quarkus Kubernetes クライアントを使用する場合のサポートは提供していません。

Red Hat ビルドの Quarkus 1.11 には、Quarkus Kubernetes クライアントの新しいバージョンが含まれています。Quarkus Kubernetes クライアントバージョン 4.x を開発環境で使用し、既存のアプリケーションをバージョン 5.x にアップグレードする場合は、Kubernetes Client Migration Guide を参照してください。

3.15. Quarkus Dev UI

重要

Red Hat では、実稼働環境での Quarkus Dev UI の使用に対するサポートは提供していません。

Red Hat ビルドの Quarkus 1.11 には、Quarkus Dev UI の最初のリリースが含まれます。Dev UI は実験的なインターフェースで、以下のような場合に使用できます。

  • アプリケーションで現在使用しているエクステンションの一覧の表示
  • アプリケーションでのエクステンションのステータスの確認
  • アプリケーションで使用しているエクステンションのドキュメントへのアクセス

アプリケーションを開発モードで起動して、Web ブラウザーで localhost:8080/q/dev に移動しすると、Dev UI にアクセスできます。