翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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
ベストプラクティス: 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.