Apache 5.x ベースの HTTP クライアントを設定する - AWS SDK for Java 2.x

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Apache 5.x ベースの HTTP クライアントを設定する

Apache5HttpClient にアクセスする

を使用するには、 に依存関係を追加apache5-clientし、サービスクライアントApache5HttpClientで明示的に を設定Apache5HttpClientする必要があります。

<dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.41.0*</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3</artifactId> </dependency> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>apache5-client</artifactId> </dependency> </dependencies>

*赤で示されているバージョンを、使用する Java SDK のバージョンに置き換えてください。Maven Central で最新最新バージョンを見つけます。

Apache5HttpClient を使用および設定する

サービスクライアントを構築すると同時に Apache5HttpClient のインスタンスを設定することも、単一インスタンスを複数のサービスクライアント間で共有するように設定することもできます。

どちらの方法でも、Apache5HttpClient.Builder を使用して Apache 5 ベースの HTTP クライアントのプロパティを設定します。

ベストプラクティス: Apache5HttpClient インスタンスをサービスクライアント専用にする

Apache5HttpClient のインスタンスを設定する必要がある場合は、専有 Apache5HttpClient インスタンスを構築することをお勧めします。これを行うには、サービスクライアントのビルダーの httpClientBuilder メソッドを使用します。この方法では、HTTP クライアントのライフサイクルが SDK によって管理されるため、不要になったときに Apache5HttpClient インスタンスを閉じなかった場合にメモリリークが発生するのを防ぐことができます。

次の例では、S3Client を作成し、maxConnections と connectionTimeout 値Apache5HttpClientを使用して の埋め込みインスタンスを設定します。HTTP インスタンスは、S3Client.Builder のメソッド httpClientBuilder を使用して作成されます。

インポート

import software.amazon.awssdk.http.apache5.Apache5HttpClient; import software.amazon.awssdk.services.s3.S3Client; import java.time.Duration;

[コード]

S3Client s3Client = S3Client // Singleton: Use the s3Client for all requests. .builder() .httpClientBuilder(Apache5HttpClient.builder() .maxConnections(100) .connectionTimeout(Duration.ofSeconds(5)) ) .build(); // Perform work with the s3Client. s3Client.close(); // Requests completed: Close all service clients.

別の方法: Apache5HttpClient インスタンスを共有する

アプリケーションのリソースとメモリの使用量を低く抑えるため、Apache5HttpClient を設定して複数のサービスクライアント間で共有できます。HTTP 接続プールは共有されるため、リソースの使用量が少なくなります。

注記

Apache5HttpClient インスタンスを共有する場合、破棄の準備が整った時点でインスタンスを閉じる必要があります。サービスクライアントが閉じられても、SDK はインスタンスを閉じません。

次の例では、2 つのサービスクライアントで使用される Apache ベースの HTTP クライアントを設定します。設定されたApacheHttpClientインスタンスは、各ビルダーの httpClient メソッドに渡されます。サービスクライアントと HTTP クライアントが不要になると、コードによって明示的に閉じられます。HTTP クライアントは最後に閉じられます。

インポート

import software.amazon.awssdk.http.SdkHttpClient; import software.amazon.awssdk.http.apache5.Apache5HttpClient; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.s3.S3Client;

[コード]

SdkHttpClient apache5HttpClient = Apache5HttpClient.builder() .maxConnections(100).build(); // Singletons: Use the s3Client and dynamoDbClient for all requests. S3Client s3Client = S3Client.builder() .httpClient(apache5HttpClient).build(); DynamoDbClient dynamoDbClient = DynamoDbClient.builder() .httpClient(apache5HttpClient).build(); // Perform work with the s3Client and dynamoDbClient. // Requests completed: Close all service clients. s3Client.close(); dynamoDbClient.close(); apache5HttpClient.close(); // Explicitly close apache5HttpClient.