View a markdown version of this page

Configurar el cliente HTTP basado en Apache 5.x - AWS SDK for Java 2.x

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configurar el cliente HTTP basado en Apache 5.x

El SDK Apache5HttpClient se basa en el Apache HttpClient 5.x.

Acceda al Apache5HttpClient

En la mayoría de las situaciones, Apache5HttpClient se utiliza sin ninguna configuración explícita. Declare sus clientes de servicios y el SDK configurará los Apache5HttpClient con valores estándar por usted.

Si quiere configurar de forma explícita el Apache5HttpClient o usarlo con varios clientes de servicio, tiene que hacerlo disponible para su configuración.

No se necesita configuración

Cuando declara una dependencia de un cliente de servicio en Maven, el SDK añade una dependencia en tiempo de ejecución del artefacto apache5-client. Esto hace que la clase Apache5HttpClient esté disponible para su código en el tiempo de ejecución, pero no en el de compilación. Si no está configurando el cliente Apache-based HTTP, no necesita especificar una dependencia para él.

En el siguiente fragmento XML de un pom.xml archivo de Maven, la dependencia declarada con introduce <artifactId>s3</artifactId> automáticamente el Apache-based cliente HTTP. No necesita declarar una dependencia específicamente para ella.

<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>

*Reemplace la versión que se muestra en rojo por la versión del SDK de Java que desee utilizar. Busque las últimas novedades sobre Maven Central.

Con estas dependencias, no puede realizar ningún cambio en la configuración HTTP, ya que la biblioteca Apache5HttpClient solo se encuentra en la ruta de clases del tiempo de ejecución.

Se necesita configuración

Para configurar el Apache5HttpClient, es necesario añadir una dependencia a la biblioteca apache5-client en el momento de la compilación.

Consulte el siguiente ejemplo de un archivo pom.xml Maven para configurar el Apache5HttpClient.

<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>

*Reemplace la versión que se muestra en rojo por la versión del SDK de Java que desee utilizar. Busque las últimas novedades sobre Maven Central.

Utilizar y configurar el Apache5HttpClient

Puede configurar una instancia del Apache5HttpClient junto con la creación de un cliente de servicio, o configurar una sola instancia para compartirla entre varios clientes de servicio.

En cualquiera de los dos enfoques, se utiliza el Apache5HttpClient.Builder para configurar las propiedades del cliente HTTP basado en Apache 5.

Práctica recomendada: dedicar una Apache5HttpClient instancia a un cliente de servicio

Si necesita configurar una instancia del Apache5HttpClient, le recomendamos que cree la instancia Apache5HttpClient dedicada. Puede hacerlo mediante el ClientBuilder método http del generador del cliente de servicio. De esta forma, el SDK administra el ciclo de vida del cliente HTTP, lo que ayuda a evitar posibles pérdidas de memoria si la instancia Apache5HttpClient no se cierra cuando ya no se necesita.

En el siguiente ejemplo, se crea un S3Client y se configura la instancia incrustada de Apache5HttpClient con los valores maxConnections y connectionTimeout. La instancia HTTP se crea mediante el método httpClientBuilder de S3Client.Builder.

Importaciones

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

Código

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.

Enfoque alternativo: compartir una instancia Apache5HttpClient

Para reducir el uso de recursos y memoria en su aplicación, puede configurar un Apache5HttpClient y compartirlo entre varios clientes de servicio. El grupo de conexiones HTTP se compartirá, lo que reduce el uso de recursos.

nota

Al compartir una instancia de Apache5HttpClient, es preciso cerrarla cuando esté lista para ser eliminada. El SDK no cerrará la instancia cuando el cliente del servicio esté cerrado.

El siguiente ejemplo configura un cliente Apache-based HTTP que utilizan dos clientes de servicio. La Apache5HttpClient instancia configurada se pasa al método HttpClient de cada generador. Cuando los clientes de servicio y el cliente HTTP ya no son necesarios, el código los cierra de forma explícita. El código cierra el cliente HTTP por última vez.

Importaciones

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;

Código

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.