Red Hat build of Apache Camel for Quarkus のリリースノート
Red Hat build of Apache Camel for Quarkus のリリースノート
概要
はじめに リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Apache Camel ドキュメントに関するフィードバック
エラーを報告したり、ドキュメントの改善を提案したりするには、Red Hat Jira アカウントにログインし、課題を送信してください。Red Hat Jira アカウントをお持ちでない場合は、アカウントを作成するように求められます。
手順
- チケットを作成するには、チケットの作成 のリンクをクリックします。
- Summary に課題の簡単な説明を入力します。
- Description に課題や機能拡張の詳細な説明を入力します。問題があるドキュメントのセクションへの URL も記載してください。
- Submit をクリックすると、課題が作成され、適切なドキュメントチームに転送されます。
第1章 Red Hat build of Apache Camel for Quarkus 3.20 / 3.20.3 のリリースノート リンクのコピーリンクがクリップボードにコピーされました!
1.1. Red Hat build of Apache Camel for Quarkus の機能 リンクのコピーリンクがクリップボードにコピーされました!
- 高速起動と低 RSS メモリー
- Quarkus の最適化されたビルドタイムおよび事前 (AOT: Ahead-of-Time) コンパイラー機能を使用すると、ビルド時に Camel アプリケーションを事前に設定できるため、起動時間を短縮できます。
- アプリケーションジェネレーター
- Quarkus アプリケーションジェネレーター を使用して、アプリケーションをブートストラップし、エクステンションエコシステムを検出します。
- 高度な設定が可能
Red Hat build of Apache Camel for Quarkus アプリケーションの重要な側面はすべて、CDI (Contexts and Dependency Injection) または設定プロパティーを使用してプログラム的に設定できます。デフォルトでは、CamelContext が設定され、自動的に開始されます。
アプリケーションのブートストラップおよび設定のさまざまな方法に関する詳細は、プロパティーファイルを使用した Quarkus アプリケーションの設定 ガイドを参照してください。
- 既存の Quarkus エクステンションとの統合
- Red Hat build of Apache Camel for Quarkus は、ネイティブサポートと設定オプションを継承する Camel コンポーネントにより使用されるライブラリーとフレームワークのエクステンションを提供します。
1.2. サポートされるプラットフォーム、設定、データベース、およびエクステンション リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Apache Camel for Quarkus バージョン 3.20 でサポートされているプラットフォーム、構成、およびデータベースは、カスタマーポータルの サポートされる構成 ページを参照してください (ログインが必要です)。
Red Hat Red Hat build of Apache Camel for Quarkus エクステンションのリストと、各エクステンションに対する Red Hat のサポートレベルは、Red Hat build of Apache Camel for Quarkus リファレンス の エクステンションの概要 の章を参照してください (ログインが必要です)。
1.3. Red Hat build of Apache Camel for Quarkus の BOM ファイル リンクのコピーリンクがクリップボードにコピーされました!
-
サポートされているエクステンションを使用するように Red Hat build of Apache Camel for Quarkus バージョン 3.20 プロジェクトを設定するには、Redhat Maven リポジトリー にある最新の BOM (Bill of Materials)バージョン 3
.20.3.redhatOutInterceptor 以降を使用します。
BOM 依存関係管理の詳細は、Red Hat build of Apache Camel for Quarkus を使用したアプリケーションの開発 を参照してください。
1.4. テクノロジープレビューのエクステンション リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Apache Camel for Quarkus リファレンス の エクステンションの概要 の章で テクノロジープレビュー として指定されている項目は、テクノロジープレビュー機能のサポート範囲で定義されているように、サポート範囲が制限されています。
1.5. 製品のエラータとセキュリティーアドバイザリー リンクのコピーリンクがクリップボードにコピーされました!
1.5.1. Red Hat build of Apache Camel for Quarkus リンクのコピーリンクがクリップボードにコピーされました!
最新の Red Hat build of Apache Camel for Quarkus 製品エラータとセキュリティーアドバイザリーは、Red Hat 製品エラータ ページを参照してください。
1.5.2. Red Hat build of Quarkus リンクのコピーリンクがクリップボードにコピーされました!
最新の Red Hat build of Quarkus 製品エラータとセキュリティーアドバイザリーは、Red Hat 製品エラータ ページを参照してください。
1.6. Red Hat build of Apache Camel for Quarkus バージョン 3.20 における JUnit の重大な変更 リンクのコピーリンクがクリップボードにコピーされました!
Quarkus 3.20.1 では、JUnit が 5.10 から 5.12 にアップグレードされました。
このアップグレードでは、異なる検索アルゴリズムが使用されるため、アノテーション付きメソッドのリフレクションと継承の動作が変更されます。
ユニットテストスイートが古い動作に依存している場合は、新しい動作を考慮してテストを変更する必要があります。
リフレクションパラメーターを設定することで、新しい JUnit バージョンでエミュレートできます。
-Djunit.platform.reflection.search.useLegacySemantics=true
詳細は、JUnit 5.11.0 リリースドキュメントの New Features and Improvements セクションを参照してください。
1.7. 既知の問題 リンクのコピーリンクがクリップボードにコピーされました!
1.7.1. Java DSL で .endChoice() の動作をリファクタリングしました リンクのコピーリンクがクリップボードにコピーされました!
endChoice メソッドが end().endChoice() に変更されました (CEQ-11181 を参照)。
Choice EIP を使用する場合、状況によっては、現在の Choice EIP にさらに続けてノードを追加できるように .endChoice() を使用する必要があります。また、ネストされた Choice EIP (Choice の中に Choice がある構造) を使用している場合には、親の Choice に戻って続行するために、endChoice を使用する必要があります。
ただし、古い Camel リリースを 4.11 にアップグレードすると複数のリグレッションが発生したため、動作の一貫性を保つために endChoice をリファクタリングしました。
たとえば、以下のコードは、
from("direct:start")
.choice()
.when(header("foo").isGreaterThan(1))
.choice()
.when(header("foo").isGreaterThan(5))
.to("mock:big")
.otherwise()
.to("mock:med")
.endChoice()
.otherwise()
.to("mock:low")
.end();
次のように変更されています。
from("direct:start")
.choice()
.when(header("foo").isGreaterThan(1))
.choice()
.when(header("foo").isGreaterThan(5))
.to("mock:big")
.otherwise()
.to("mock:med")
.end().endChoice()
.otherwise()
.to("mock:low")
.end();
endChoice メソッドを end().endChoice() に変更すると、呼び出しの一貫性が保たれます。
これにより、現在 (内部) の選択が終了し、スコープが Choice EIP に変更され、前 (外部) の choice を続行できるようになります。
これにより、スコープが Choice EIP であることが Java DSL に通知され、外側の choice に otherwise ブロックを追加できます (それ以外の場合は機能しません)。
1.7.2. Websocket + Knative は HTTP2 では動作しない リンクのコピーリンクがクリップボードにコピーされました!
Knative では、camel-quarkus-grpc と camel-vertx-websocket の両方をサポートしています。
gRPC には HTTP2 が必要です (有効にする方法は、HTTP2 on Knative を参照してください)。
ただし、Knative を使用した Websocket は HTTP2 では動作しません (OpenShift Container Platform の Ingress Operator を参照してください)。
そのため、WebSocket 接続を受け入れることが意図されたアプリケーションがある場合、これは HTTP/2 プロトコルのネゴシエートを許可できないようにする必要があります。そうしないと、クライアントは WebSocket プロトコルへのアップグレードに失敗します。
1.7.3. Maven 更新実行時のエラー リンクのコピーリンクがクリップボードにコピーされました!
指定されたバージョンで Maven 更新を実行する場合:
mvn com.redhat.quarkus.platform:quarkus-maven-plugin:3.20.3.redhat-00006:update -Drewrite
これにより、次のようなエラーが発生する可能性があります。
Failed to apply the updates: The project is missing the Quarkus platform BOM in module foo.
影響を受けるモジュールはプロジェクトに固有であるため、影響を受けるモジュールを見つけるにはエラーメッセージを読む必要があります。
- 回避策
エラーを回避するには、エラーメッセージに記載されているモジュールに
quarkus-resteasy依存関係を追加します。この例では、
fooモジュールに依存関係をfoo/pom.xmlに追加します。<dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-resteasy</artifactId> </dependency>
1.8. 重要事項 リンクのコピーリンクがクリップボードにコピーされました!
1.8.1. IBM Power および IBM Z のサポート リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Apache Camel for Quarkus は、IBM Power および IBM Z でサポートされています。
1.8.2. Java の最小バージョン - JDK 17 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Apache Camel for Quarkus バージョン 3.20 には、JDK 17 以降が必要です。
1.8.3. OpenJDK のサポート リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Apache Camel for Quarkus バージョン 3.20 には、OpenJDK 21 のサポートが含まれています。
1.8.4. AdoptiumJDK のサポート リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Apache Camel for Quarkus バージョン 3.20 には、AdoptiumJDK 17 および AdoptiumJDK 21 のサポートが含まれています。
1.9. Camel がバージョン 4.8 からバージョン 4.10 にアップグレード リンクのコピーリンクがクリップボードにコピーされました!
1.9.1. Camel のバージョン 4.8 からバージョン 4.10 へのアップグレード リンクのコピーリンクがクリップボードにコピーされました!
Camel のアップグレードに関する重要な情報は、Apache Camel のユーザーマニュアル のセクションを参照してください。
1.9.2. Camel バージョン 4.8 からバージョン 4.10 までのリリースノート リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Apache Camel for Quarkus バージョン 3.20 は、Camel バージョン 4.8 から Camel バージョン 4.10 にアップグレードされました。介在する各 Camel パッチリリースに関する追加情報は、以下を参照してください。
- Apache Camel 4.10.3 リリースノート
- Apache Camel 4.10.2 リリースノート
- Apache Camel 4.10.1 リリースノート
- Apache Camel 4.10.0 リリースノート
- Apache Camel 4.9.0 リリースノート
- Apache Camel 4.8.7 リリースノート
- Apache Camel 4.8.6 リリースノート
- Apache Camel 4.8.5 リリースノート
- Apache Camel 4.8.4 リリースノート
- Apache Camel 4.8.3 リリースノート
- Apache Camel 4.8.2 リリースノート
- Apache Camel 4.8.1 リリースノート
- Apache Camel 4.8.0 リリースノート
1.9.3. Camel Quarkus がバージョン 3.15 から 3.20 にアップグレード リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Apache Camel for Quarkus バージョン 3.20 が Camel Quarkus バージョン 3.8 から Camel Quarkus バージョン 3.20 にアップグレードされました。その間の各 Camel Quarkus パッチリリースに関する詳細は、以下を参照してください。
- Apache Camel 3.20.3 リリースノート
- Apache Camel 3.20.2 リリースノート
- Apache Camel 3.20.1 リリースノート
- Apache Camel 3.20.0 リリースノート
- Apache Camel 3.19.0 リリースノート
- Apache Camel 3.18.0 リリースノート
- Apache Camel 3.17.0 リリースノート
- Apache Camel 3.16.0 リリースノート
- Apache Camel 3.15.3 リリースノート
- Apache Camel 3.15.2 リリースノート
- Apache Camel 3.15.1 リリースノート
- Apache Camel 3.15.0 リリースノート
1.10. 解決した問題 リンクのコピーリンクがクリップボードにコピーされました!
次のリストは、Red Hat build of Apache Camel for Quarkus に影響を及ぼしていた既知の問題を示しています。これらは、Red Hat build of Apache Camel for Quarkus バージョン 3.20 で修正されています。
| 問題 | 説明 | |
|---|---|---|
| 1 | EIP: endChoice() はネストされた選択肢の親を取得できない | |
| 2 | CVE-2025-58056 netty-codec-http: チャンクの拡張機能の誤った解析により、Netty がリクエストに脆弱である | |
| 3 | CVE-2025-58056 netty-codec-http2: チャンクの拡張機能の誤った解析により、smuggling をリクエストに対して Netty が脆弱である | |
| 4 | ファイルクラスターサービスを備えた Camel マスターでの分割ブライン。 |
| 問題 | 説明 | |
|---|---|---|
| 1 | CVE-2025-55163 netty-codec-http2: Netty MadeYouReset HTTP/2 DDoS Vulnerability |
| 問題 | 説明 | |
|---|---|---|
| 1 | CVE-2025-48734 quarkus-cxf-bom: Apache Commons BeanUtils: PropertyUtilsBean は、デフォルトで列挙型の declaredClass プロパティーを抑制しない | |
| 2 | CAMEL-22125 camel-platform-http-vertx - レスポンスの書き込みでは ByteBuffer よりも入力ストリームを優先する | |
| 3 | CAMEL-22130 camel-platform-http-vertx - タイムアウトオプションの追加 |
| 問題 | 説明 | |
|---|---|---|
| 1 | Camel ルートの opentelemetry トレース ID をオーバーライドするための API を公開する | |
| 2 | "quarkus-camel-bom-3.15.2.redhat-00003.pom" にはアーティファクト "io.quarkiverse.artemis/quarkus-test-artemis" がない | |
| 3 | CAMEL-21884 バックポートリクエスト | |
| 4 | Camel Quarkus JPA は名前付き永続ユニットでは動作しない | |
| 5 | [CAMEL-22001 camel-core - Kamelet と EIP は exchange 変数を伝播する必要がある | |
| 6 | CAMEL-21495 バックポートリクエスト: camel-quarkus: REST ルートのインライン化がテスト時に正しく動作しない |
1.11. Red Hat build of Apache Camel for Quarkus バージョン 3.20 の非推奨機能 リンクのコピーリンクがクリップボードにコピーされました!
以下の機能は、Red Hat build of Apache Camel for Quarkus の次のメジャーリリースでは利用できず、このリリースでは非推奨となります。
1.11.1. camel-quarkus-jolokia register-management-endpoint のデフォルトは false に変更 リンクのコピーリンクがクリップボードにコピーされました!
camel-quarkus-jolokia を使用する場合、/q/jolokia Quarkus 管理エンドポイントはデフォルトでは登録されなくなりました。これは、今後のリリースで削除される予定です。
以前の動作を復元し、/q/jolokia を公開する必要がある場合は、以下を application.properties に追加できます。
quarkus.camel.jolokia.register-management-endpoint=true
ただし、前述のとおり、このオプションは最終的には削除されます。
1.12. Red Hat build of Apache Camel for Quarkus バージョン 3.20 で追加されたエクステンション リンクのコピーリンクがクリップボードにコピーされました!
次の表は、Red Hat build of Apache Camel for Quarkus バージョン 3.20 リリースで追加されたエクステンションを示しています。
| エクステンション | アーティファクト | 説明 | |
|---|---|---|---|
| 1 | CICS | IBM CICS システムの操作 | |
| 2 | Groovy | Groovy スクリプトを評価します。 | |
| 3 | Jolokia | Jolokia を使用して JMX 経由でランタイムメトリクスと管理操作を公開します。 | |
| 4 | Observability services | Camel 可観測性サービス | |
| 5 | Olingo4 | Apache Olingo OData API を使用して OData 4.0 サービスと通信します。 | |
| 6 | Smooks | Smooks を使用して、EDI、CSV、JSON、YAML などの XML データと非 XML データの両方を変換、ルーティング、バインドします。 | |
| 7 | SSH | SSH を使用してリモートホストでコマンドを実行します。 |
1.13. Red Hat build of Apache Camel for Quarkus バージョン 3.20 で削除されたエクステンション リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Apache Camel for Quarkus バージョン 3.20 リリースではエクステンションは削除されません。
1.14. Red Hat build of Apache Camel for Quarkus バージョン 3.20 でサポートが変更されたエクステンション リンクのコピーリンクがクリップボードにコピーされました!
次の表は、Red Hat build of Apache Camel for Quarkus バージョン 3.20 でサポートレベルが変更された拡張機能のリストです。
| 拡張機能 | アーティファクト | 説明 | |
|---|---|---|---|
| 8 |
| AWS SDK バージョン 2.x を使用して AWS Secrets Manager サービスを管理します。 | |
| 9 |
| Azure Key Vault サービスでシークレットと鍵を管理します。 | |
| 10 |
| Azure Event Bus との間でメッセージを送受信します。 | |
| 11 |
| Java Bean をフラットファイル (CSV、区切り形式、固定長形式など) にマーシャリングおよびアンマーシャリングします。 | |
| 12 |
| DataSet ジョブを Apache Flink クラスターに送信します。 | |
| 13 |
| Google Secret Manager シークレットを管理する | |
| 14 |
| JQ 式を JSON メッセージボディーに対して評価します。 | |
| 15 |
| Kubernetes API に対して操作を実行する |
サポートレベルの詳細は、Red Hat build of Apache Camel for Quarkus エクステンション を参照してください。
1.15. Red Hat build of Apache Camel for Quarkus バージョン 3.20 で追加されたデータ形式 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Apache Camel for Quarkus バージョン 3.20 リリースには、データ形式は追加されていません。
1.16. Quarkus CXF 集約リリースノート: 3.15.3 LTS → 3.20.2 LTS リンクのコピーリンクがクリップボードにコピーされました!
このセクションは、3.15 LTS ストリームから 3.20 LTS ストリームにアップグレードするときに役立つ可能性があります。
1.16.1. 重要な依存関係のアップグレード リンクのコピーリンクがクリップボードにコピーされました!
1.16.2. Quarkus CXF の新機能と重要なポイント リンクのコピーリンクがクリップボードにコピーされました!
1.16.2.1. #1486 TLS レジストリーのサポート リンクのコピーリンクがクリップボードにコピーされました!
Quarkus TLS レジストリー は、Quarkus によって提供される拡張機能であり、TLS 設定を一元管理して、アプリケーション全体で安全な接続の管理と維持を容易にします。
io.quarkus:quarkus-tls-registry は、Quarkus CXF 3.16.0 以降、io.quarkiverse.cxf:quarkus-cxf の推移的な依存関係であるため、手動で追加する必要はありません。
Quarkus TLS レジストリーは、Quarkus CXF 3.16.0 以降でトラストストア、キーストア、その他の TLS/SSL 関連の設定で新たに推奨される方法です。
application.properties
# Define a TLS configuration with name "hello-tls"
quarkus.tls.hello-tls.trust-store.p12.path = client-truststore.pkcs12
quarkus.tls.hello-tls.trust-store.p12.password = client-truststore-password
# Basic client settings
quarkus.cxf.client.hello.client-endpoint-url = https://localhost:${quarkus.http.test-ssl-port}/services/hello
quarkus.cxf.client.hello.service-interface = io.quarkiverse.cxf.it.security.policy.HelloService
# Use "hello-tls" defined above for this client
quarkus.cxf.client.hello.tls-configuration-name = hello-tls
- 1
- 参照される
client-truststore.pkcs12ファイルは、クラスパスまたはファイルシステムのいずれかで使用可能である必要があります。
Quarkus TLS レジストリー によって提供されるすべてのクライアント関連オプションは、Vert.x ベースの CXF クライアントでサポートされます。
1.16.2.1.1. 他のクライアントとの制限 リンクのコピーリンクがクリップボードにコピーされました!
TLS レジストリーによって提供される名前付き TLS 設定は http-conduit-factory が URLConnectionHTTPConduitFactory、HttpClientHTTPConduitFactory に設定されている CXF クライアント、または Apache HttpClient 5 上の非同期 CXF クライアントにも使用できます。ただし、このような場合、次の TLS オプションはサポートされておらず、使用すると実行時に例外が発生します。
1.16.2.1.2. 廃止されたストア リンクのコピーリンクがクリップボードにコピーされました!
クライアントのトラストストアとキーストアを設定する 以前の方法 も引き続きサポートされていますが、Quarkus CXF 3.16.0 以降では非推奨になっています。
application.properties
# Deprecated way of setting the client trust store
quarkus.cxf.client.hello.trust-store-type = pkcs12
quarkus.cxf.client.hello.trust-store = client-truststore.pkcs12
quarkus.cxf.client.hello.trust-store-password = client-truststore-password
1.16.2.2. Vert.x HttpClient ベースの HTTP Conduit が新しいデフォルトに リンクのコピーリンクがクリップボードにコピーされました!
Vert.x HttpClient ベースの HTTP Conduit は、Quarkus CXF 3.13.0 で 導入 されました。quarkus.cxf.client."client-name".http-conduit-factory または quarkus.cxf.http-conduit-factory のいずれかのオプションで VertxHttpClientHTTPConduitFactory を設定することで、オプションで使用できるようになりました。
application.properties
# Before Quarkus CXF 3.16.0, VertxHttpClientHTTPConduitFactory had to be set explicitly
# Set the HTTPConduitFactory per-client
quarkus.cxf.client."client-name".http-conduit-factory = VertxHttpClientHTTPConduitFactory
# Set the HTTPConduitFactory globally
quarkus.cxf.http-conduit-factory = VertxHttpClientHTTPConduitFactory
それ以降、改良とテストを行い、デフォルトの設定として指定されています。
Vert.x HttpClient ベースの HTTP Conduit をデフォルトとして使用する主な理由は次のとおりです。
- HTTP/2 への対応
- 特にワーカースレッドプールと SSL/TLS 設定の領域において、Quarkus とのシームレスな統合。
1.16.2.2.1. 古いデフォルトを強制する リンクのコピーリンクがクリップボードにコピーされました!
この変更が加えられるまで、有効なデフォルトは URLConnectionHTTPConduitFactory でした。現在も定期的にサポートおよびテストが行われています。
次の 3 つの方法のいずれかで、以前のデフォルトに戻すことができます。
-
QUARKUS_CXF_DEFAULT_HTTP_CONDUIT_FACTORY環境変数をURLConnectionHTTPConduitFactoryに設定する -
グローバル quarkus.cxf.http-conduit-factory オプションを
URLConnectionHTTPConduitFactoryに設定する -
クライアントごとに quarkus.cxf.client."client-name".http-conduit-factory オプションを
URLConnectionHTTPConduitFactoryに設定する
1.16.2.2.2. ホスト名の検証は VertxHttpClientHTTPConduitFactory との組み合わせではサポートされません リンクのコピーリンクがクリップボードにコピーされました!
Quarkus CXF 3.16.0 以降、quarkus.cxf.client."client-name".hostname-verifier を設定し、デフォルトの VertxHttpClientHTTPConduitFactory を使用すると、実行時に例外が発生します。
このオプションの AllowAllHostnameVerifier 値は hostname-verification-algorithm を NONE に設定した 名前付き TLS 設定 を使用して置き換えることができます。
例: Quarkus CXF 3.16.0 より前の設定が以下の場合
application.properties
# A configuration that worked before Quarkus CXF 3.16.0
quarkus.cxf.client.helloAllowAll.client-endpoint-url = https://localhost:8444/services/hello
quarkus.cxf.client.helloAllowAll.service-interface = io.quarkiverse.cxf.it.security.policy.HelloService
quarkus.cxf.client.helloAllowAll.trust-store = client-truststore.pkcs12
quarkus.cxf.client.helloAllowAll.trust-store-password = secret
quarkus.cxf.client.helloAllowAll.hostname-verifier = AllowAllHostnameVerifier
Quarkus CXF 3.16.0+ の同等の設定は次のようになります。
application.properties
# An equivalent configuration for Quarkus CXF 3.16.0+
quarkus.tls.helloAllowAll.trust-store.p12.path = client-truststore.pkcs12
quarkus.tls.helloAllowAll.trust-store.p12.password = secret
quarkus.tls.helloAllowAll.hostname-verification-algorithm = NONE
quarkus.cxf.client.helloAllowAll.client-endpoint-url = https://localhost:8444/services/hello
quarkus.cxf.client.helloAllowAll.service-interface = io.quarkiverse.cxf.it.security.policy.HelloService
quarkus.cxf.client.helloAllowAll.tls-configuration-name = helloAllowAll
1.16.2.3. #1447 VertxHttpClientHTTPConduit で非同期モードをサポート リンクのコピーリンクがクリップボードにコピーされました!
Quarkus CXF 3.17.0 より前では、VertxHttpClientHTTPConduit に基づく CXF クライアントは同期的にしか呼び出すことができませんでした。
@CXFClient("hello")
HelloService hello;
String callHello() {
// Synchronous CXF client call
hello.hello("Joe");
}
Quarkus CXF 3.17.0 では、VertxHttpClientHTTPConduit ベースのクライアントに非同期モードが導入されました。
import io.smallrye.mutiny.Uni;
@CXFClient("hello")
HelloService hello;
Uni<String> callHelloAsync() {
return Uni.createFrom()
// Asynchronous CXF client call returning java.util.concurrent.Future
.future(hello.helloAsync("Joe"))
.map(HelloResponse::getReturn);
}
これは、既存の Apache HttpClient 5 Async HTTP Transport とほぼ同じように動作します。主な違いは、(現在は非推奨となっている) io.quarkiverse.cxf:quarkus-cxf-rt-transports-http-hc5 依存関係をアプリケーションに追加する必要がなくなったことです。
組み込みの wsdl2java ツールを使用して 非同期メソッドを生成する 必要があります。
詳細は、非同期クライアント ページを確認してください。
1.16.2.4. #1609 VertxHttpClientHTTPConduit による HTTP リダイレクトのサポート リンクのコピーリンクがクリップボードにコピーされました!
Quarkus CXF 3.17.0 より前では、特定のクライアントに対して quarkus.cxf.client."client-name".auto-redirect が有効になっている場合でも、VertxHttpClientHTTPConduit ベースの CXF クライアントは HTTP リダイレクト (Location 応答ヘッダーを含む HTTP ステータスコード 301、302、303、および 307) に従いませんでした。
Quarkus CXF 3.17.0 では、この機能に加えて quarkus.cxf.client."client-name".max-retransmits の適切なサポートも追加されています。
新しい設定プロパティー quarkus.cxf.client."client-name".redirect-relative-uri が導入されました。これは、CXF ですでにサポートされている CXF クライアント要求コンテキストで http.redirect.relative.uri プロパティーを設定することと同じです。
1.16.2.5. #1639 quarkus.cxf.client."client-name".max-same-uri 設定オプションの追加 リンクのコピーリンクがクリップボードにコピーされました!
詳細は quarkus.cxf.client."client-name".max-same-uri のドキュメントを確認してください。
@dcheng1248 の 貢献 に特に感謝します。
1.16.2.6. #1628 VertxHttpClientHTTPConduit によるリクエストデータのディスクへのオフロードをサポート リンクのコピーリンクがクリップボードにコピーされました!
Quarkus CXF 3.17.0 では、VertxHttpClientHTTPConduit による リダイレクトのサポート が追加されました。これには、再送信のためにリクエスト本体の基本的なメモリー内キャッシュが含まれていました。Quarkus CXF 3.18.0 以降、VertxHttpClientHTTPConduit は、本体のサイズが設定可能なしきい値を超えた場合に、データをディスクにオフロードできるようになりました。新しい機能がどのように動作するかを確認するには、次の新しい設定オプションのドキュメントを確認してください。
上記の設定オプションは、URLConnectionHTTPConduit でも機能します。
1.16.2.7. #1616 VertxHttpClientHTTPConduit での認可再送信をサポート リンクのコピーリンクがクリップボードにコピーされました!
Quarkus CXF 3.20.0 より前では、リモートサービスが 401 Unauthorized または 407 Proxy Authentication Required との応答が返されると、VertxHttpClientHTTPConduit でサポートされているクライアントは単に失敗していました。唯一の回避策は URLConnectionHTTPConduit などの他の HTTP conduit を使用することでした。
Quarkus CXF 3.20.0 以降、VertxHttpClientHTTPConduit は、次の 1 つ以上のオプションから派生した Authorization ヘッダー値を含む新しいリクエストを送信することにより、401 および 407 ステータスコードを適切に処理します。
1.16.2.8. #1680 すべての CXF クライアントの TLS オプションを設定するために quarkus.cxf.client.tls-configuration-name を導入 リンクのコピーリンクがクリップボードにコピーされました!
Quarkus CXF 3.19.0 より前は、quarkus.cxf.client."client-name".tls-configuration-name または (現在は非推奨) quarkus.cxf.client."client-name".key-store* および quarkus.cxf.client."client-name".trust-store* オプションを使用してしか、CXF クライアントごとにトラストストアおよびキーストアを設定することができませんでした。
複数のクライアントがある場合、この設定は冗長になる可能性があります。
Quarkus CXF 3.19.0 以降では、quarkus.cxf.client.tls-configuration-name オプションを使用して、すべてのクライアントのトラストストアとキーストアを設定できます。
1.16.3. バグ修正 リンクのコピーリンクがクリップボードにコピーされました!
1.16.3.1. #1697 quarkus-cxf-integration-tracing-opentelemetry と quarkus-jdbc-Oracle を使用するとネイティブビルドが失敗する リンクのコピーリンクがクリップボードにコピーされました!
Quarkus CXF 3.19.0 より前では、quarkus-jdbc-Oracle を quarkus-cxf-integration-tracing-opentelemetry または quarkus-cxf-rt-ws-rm と 1 つのアプリケーションで組み合わせると、ネイティブイメージのビルド中に次のようなエラーが発生しました。
org.graalvm.compiler.debug.GraalError: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException:
Detected a MBean server in the image heap. This is currently not supported, but could be changed in the future.
Management beans are registered in many global caches that would need to be cleared and properly re-built at image build time.
Class of disallowed object: com.sun.jmx.mbeanserver.JmxMBeanServer
Quarkus CXF 3.19.0 でこの問題は修正されました。
JMX 機能はネイティブモードでは依然としてサポートされていません。
1.16.3.2. #1326 CXF-9003 1 つの Java パッケージ内で名前が同じサービスメソッドがあると競合が発生する リンクのコピーリンクがクリップボードにコピーされました!
各サービスメソッドに対して、ビルド時にいくつかの補助クラスが生成されます。これらは、操作の要求または応答を表す場合があります。したがって、com.acme.HelloService.hello() メソッドでは、少なくとも 2 つのクラス com.acme.jaxws_asm.Hello と com.acme.jaxws_asm.HelloResponse が生成されます。Quarkus CXF 3.20.0 および CXF 4.1.1 より前では、サービスクラスの名前は考慮されませんでした。したがって、単一の Java パッケージ内に同じ名前のメソッドを含む複数のサービスインターフェイスがある場合、それらの補助クラスの名前が衝突することになります。つまり、これらのサービスの 1 つだけに適したクラスの 1 セットだけがアプリケーションに保存されることになります。実行時に、アプリケーションログに次のエラーメッセージが表示される場合があります。
java.lang.IllegalArgumentException: argument type mismatch
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.apache.cxf.databinding.AbstractWrapperHelper.createWrapperObject(AbstractWrapperHelper.java:114)
at org.apache.cxf.jaxws.interceptors.WrapperClassOutInterceptor.handleMessage(WrapperClassOutInterceptor.java:91)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:530)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:441)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:356)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:314)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:140)
at jdk.proxy6/jdk.proxy6.$Proxy132.hello(Unknown Source)
この問題は CXF 4.1.1 および Quarkus CXF 3.20.0 で修正されました。新しいバージョンでは、サービスクラスの名前が考慮されます。したがって、上記の例では、生成されるクラスの名前はそれぞれ com.acme.jaxws_asm.helloservice.Hello と com.acme.jaxws_asm.helloservice.HelloResponse です。
1.16.4. 非推奨 リンクのコピーリンクがクリップボードにコピーされました!
1.16.4.1. #1633 HttpClientHTTPConduitFactory の *.http-conduit-factory の値は非推奨に リンクのコピーリンクがクリップボードにコピーされました!
quarkus.cxf.http-conduit-factory と quarkus.cxf.client."client-name".http-conduit-factory の HttpClientHTTPConduitFactory 値は、Quarkus CXF 2.3.0 で導入されて以来存在しています。
HttpClientHTTPConduit hs、Quarkus CXF 内で実際に広く受け入れられることはありませんでした。CXF でこれがデフォルトとして使用され、#992、CXF-8885、CXF-8951、CXF-8946、CXF-8903 などのバグを回避するために、独自のデフォルト (URLConnectionHTTPConduitFactory) を導入せざるを得ませんでした。現在、Quarkus で非常に適切にサポートできる VertxHttpClientHTTPConduit があるため、HttpClientHTTPConduit にリソースを費やす理由はなくなりました。
HttpClientHTTPConduitFactory はドキュメントで非推奨としてマークされ、まだ使用しているユーザーのためにアプリケーションの起動時にいくつかの警告が追加されました。
1.16.4.2. #1632 io.quarkiverse.cxf:quarkus-cxf-rt-transports-http-hc5 が非推奨に リンクのコピーリンクがクリップボードにコピーされました!
io.quarkiverse.cxf:quarkus-cxf-rt-transports-http-hc5 エクステンションは、Quarkus CXF 3.19.0 以降非推奨となり、3.21.0 で削除される予定です。代わりに VertxHttpClientHTTPConduit の非同期モード を使用してください。
これは、今後に向けて Vert.x HttpClient に基づく単一の HTTP Conduit のみをサポートする弊社の取り組みの一環です。
1.16.4.3. 非推奨の設定プロパティー リンクのコピーリンクがクリップボードにコピーされました!
-
quarkus.cxf.client."client-name".username- 代わりにquarkus.cxf.client."client-name".auth.usernameを使用してください -
quarkus.cxf.client."client-name".password- 代わりにquarkus.cxf.client."client-name".auth.passwordを使用してください -
quarkus.cxf.client."client-name".key-store- 代わりにquarkus.cxf.client."client-name".auth.tls-configuration-nameを使用してください -
quarkus.cxf.client."client-name".key-store-password- 代わりにquarkus.cxf.client."client-name".auth.tls-configuration-nameを使用してください -
quarkus.cxf.client."client-name".key-store-type- 代わりにquarkus.cxf.client."client-name".auth.tls-configuration-nameを使用してください -
quarkus.cxf.client."client-name".key-password- 代わりにquarkus.cxf.client."client-name".auth.tls-configuration-nameを使用してください -
quarkus.cxf.client."client-name".trust-store- 代わりにquarkus.cxf.client."client-name".auth.tls-configuration-nameを使用してください -
quarkus.cxf.client."client-name".trust-store-password- 代わりにquarkus.cxf.client."client-name".auth.tls-configuration-nameを使用してください -
quarkus.cxf.client."client-name".trust-store-type- 代わりにquarkus.cxf.client."client-name".auth.tls-configuration-nameを使用してください
1.16.5. 全変更ログ リンクのコピーリンクがクリップボードにコピーされました!
https://github.com/quarkiverse/quarkus-cxf/compare/3.15.3...3.20.2