リクエストごとに単一の HTTPClient インスタンスを再利用するのは悪い習慣ですか? request
yahoo からデータを取得するために、webservice
別のページでwebservice
google に電話をかけます。
これら 2 つの異なるページで同じ HTTPClient インスタンスを使用できますか、それとも両方に新しい HTTPClient オブジェクトを作成する必要がありますか?
リクエストごとに単一の HTTPClient インスタンスを再利用するのは悪い習慣ですか? request
yahoo からデータを取得するために、webservice
別のページでwebservice
google に電話をかけます。
これら 2 つの異なるページで同じ HTTPClient インスタンスを使用できますか、それとも両方に新しい HTTPClient オブジェクトを作成する必要がありますか?
それらを確実に再利用しHttpClient
、シングルトンとして扱う必要があります。アプリケーション全体で単一のインスタンスを再利用することで、キープアライブ接続を利用し、呼び出し間で Cookie を永続化できます。
3.xの公式ドキュメントを引用します。
一般に、通信コンポーネントごと、またはアプリケーションごとにさえ、HttpClient のインスタンスを 1 つ持つことをお勧めします。ただし、アプリケーションが HttpClient を使用する頻度が非常に低く、HttpClient のアイドル状態のインスタンスをメモリに保持することが保証されていない場合は、HttpClient インスタンスを破棄する前に、マルチスレッド接続マネージャーを明示的にシャットダウンすることを強くお勧めします。これにより、接続プール内のすべての HTTP 接続が適切に閉じられます。
同じことが 4.x にも当てはまりますPoolingClientConnectionManager
。