web-dev-qa-db-ja.com

Java Jersey 2.1クライアントスレッドは安全ですか?

jersey 2.0のドキュメントには次のように書かれています

クライアントインスタンスは高価なリソースです。構成されたインスタンスをWebリソースの作成に再利用することをお勧めします。 Webリソースの作成、要求の作成、および応答の受信は、スレッドセーフであることが保証されています。したがって、ClientインスタンスとWebResourceインスタンスは複数のスレッド間で共有できます

クライアントはバージョン2.1でもスレッドセーフですか? 2.1のドキュメント にスレッドセーフティに関する情報が見つかりません

33
jakub.piasecki

はい、Jersey 2.1クライアントはスレッドセーフであり、将来のJerseyバージョンでもスレッドセーフになるはずです。 1つのクライアントインスタンスから多くのWebTargetを作成し、これらのWebTargetsで多くのリクエストを呼び出し、同時に1つのWebTargetインスタンスでさらに多くのリクエストを呼び出すことができます。

カスタムの非スレッドセーフプロバイダーをクライアントまたはWebTagetに登録すると、スレッドセーフが壊れる可能性があります。たとえば、スレッドセーフではなく、より多くの要求を同時に処理できないClientRequestFilterです。 Jersey組み込みプロバイダーはスレッドセーフです。一部のJersey拡張プロバイダーはスレッドセーフであってはなりません。この場合、これはプロバイダーのjavadocで指定されています。

23
Miroslav Fuksa

2.1リリースノート に基づいて、その点については何も変更されていないと思いますが、このドキュメントの変更の動機はわかりません。

1
Erik Pragt