View a markdown version of this page

Configuration du client HTTP basé sur Apache 5.x - AWS SDK for Java 2.x

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configuration du client HTTP basé sur Apache 5.x

Le SDK Apache5HttpClient est basé sur Apache HttpClient 5.x.

Accédez au Apache5HttpClient

Dans la plupart des cas, vous utilisez le Apache5HttpClient sans aucune configuration explicite. Vous déclarez vos clients de service et le SDK les configurera Apache5HttpClient avec des valeurs standard pour vous.

Si vous souhaitez configurer explicitement le Apache5HttpClient ou l'utiliser avec plusieurs clients de service, vous devez le rendre disponible pour la configuration.

Aucune configuration requise

Lorsque vous déclarez une dépendance à un client de service dans Maven, le SDK ajoute une dépendance d'exécution à l'apache5-clientartefact. Cela rend la Apache5HttpClient classe disponible pour votre code au moment de l'exécution, mais pas au moment de la compilation. Si vous ne configurez pas le client Apache-based HTTP, il n'est pas nécessaire de spécifier une dépendance pour celui-ci.

Dans l'extrait XML suivant d'un pom.xml fichier Maven, la dépendance déclarée par introduit <artifactId>s3</artifactId> automatiquement le Apache-based client HTTP. Vous n'avez pas besoin de déclarer une dépendance spécifiquement pour cela.

<dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.54.0*</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <!-- The s3 dependency automatically adds a runtime dependency on the Apache5HttpClient--> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3</artifactId> </dependency> </dependencies>

*Remplacez la version affichée en rouge par la version du SDK Java que vous souhaitez utiliser. Découvrez les dernières actualités de Maven Central.

Avec ces dépendances, vous ne pouvez pas apporter de modifications explicites à la configuration HTTP, car la Apache5HttpClient bibliothèque se trouve uniquement sur le chemin de classe d'exécution.

Configuration requise

Pour configurer leApache5HttpClient, vous devez ajouter une dépendance à la apache5-client bibliothèque au moment de la compilation.

Reportez-vous à l'exemple suivant de pom.xml fichier Maven pour configurer leApache5HttpClient.

<dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.54.0*</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3</artifactId> </dependency> <!-- By adding the apache5-client dependency, Apache5HttpClient will be added to the compile classpath so you can configure it. --> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>apache5-client</artifactId> </dependency> </dependencies>

*Remplacez la version affichée en rouge par la version du SDK Java que vous souhaitez utiliser. Découvrez les dernières actualités de Maven Central.

Utilisez et configurez Apache5HttpClient

Vous pouvez configurer une instance Apache5HttpClient tout en créant un client de service, ou vous pouvez configurer une seule instance à partager entre plusieurs clients de service.

Quelle que soit l'approche, vous utilisez le Apache5HttpClient.Builder pour configurer les propriétés du client HTTP basé sur Apache 5.

Bonne pratique : dédier une Apache5HttpClient instance à un client de service

Si vous devez configurer une instance deApache5HttpClient, nous vous recommandons de créer l'Apache5HttpClientinstance dédiée. Vous pouvez le faire en utilisant la ClientBuilder méthode http du générateur du client de service. Ainsi, le cycle de vie du client HTTP est géré par le SDK, ce qui permet d'éviter d'éventuelles fuites de mémoire si l'Apache5HttpClientinstance n'est pas fermée alors qu'elle n'est plus nécessaire.

L'exemple suivant crée un S3Client et configure l'instance intégrée de Apache5HttpClient avec les valeurs MaxConnections et ConnectionTimeout. L'instance HTTP est créée à l'aide de la httpClientBuilder méthode deS3Client.Builder.

Importations

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

Code

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.

Autre approche : partager une Apache5HttpClient instance

Pour réduire l'utilisation des ressources et de la mémoire pour votre application, vous pouvez configurer un Apache5HttpClient et le partager entre plusieurs clients de service. Le pool de connexions HTTP sera partagé, ce qui réduira l'utilisation des ressources.

Note

Lorsqu'une Apache5HttpClient instance est partagée, vous devez la fermer lorsqu'elle est prête à être supprimée. Le SDK ne ferme pas l'instance lorsque le client de service est fermé.

L'exemple suivant configure un client Apache-based HTTP utilisé par deux clients de service. L'Apache5HttpClientinstance configurée est transmise à la méthode HttpClient de chaque générateur. Lorsque les clients de service et le client HTTP ne sont plus nécessaires, le code les ferme explicitement. Le code ferme le client HTTP en dernier.

Importations

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;

Code

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.