2013-08-06 8 views
26

Documentation for jersey 2.0 saysjava Jersey 2.1クライアントスレッドは安全ですか?

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

クライアントはバージョン2.1でもスレッドセーフですか? docs for 2.1.

+1

私はあなたのためにチケットをオープンしました(私の笑):https://java.net/jira/browse/JERSEY-3094 –

答えて

1

2.1 release notesに基づいて、私はこの点について何も変わっていないと考えていますが、ドキュメントのこの変更の動機を見つけることはできません。

16

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

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

+1

役に立つ答え。このような情報源もありますか? –

+3

この制限はJAX-RSまたはJerseyからのみ行われますか? ['javax.ws.rs.client.Client'](https://jax-rs-spec.java.net/nonav/2.0/apidocs/javax/ws/rs/client/Client.html)は、 _Clientsは重いオブジェクトです... Clientインスタンスの初期化と破棄はかなり高価な操作です。したがって、少数のClientインスタンスのみを構築することをお勧めします。リソースが漏れないようにするには、クライアントインスタンスを適切に閉じる必要があります._ **スレッドセーフティについては何もない** **再利用されましたが、同じ時間には何もありません。 – lucasvc

+1

@datakeyまさに誰でも答えを確認できますか?私は 'Client'と' WebTarget'について何を考えたらいいのか分かりません。 – Yanko