View a markdown version of this page

Configurar o cliente HTTP baseado em Apache 5.x - AWS SDK for Java 2.x

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configurar o cliente HTTP baseado em Apache 5.x

Os SDKs Apache5HttpClient são baseados no Apache HttpClient 5.x.

Acesse o Apache5HttpClient

Na maioria das situações, você usa o Apache5HttpClient sem nenhuma configuração explícita. Você vai declarar os clientes de serviço e o SDK vai configurar o Apache5HttpClient com valores padrão para você.

Se você quiser configurar o Apache5HttpClient explicitamente ou usá-lo com vários clientes de serviço, precisará disponibilizá-lo para configuração.

Nenhuma configuração necessária

Quando você declara uma dependência de um cliente de serviço no Maven, o SDK adiciona uma dependência de tempo de execução ao artefato apache5-client. Isso torna a classe Apache5HttpClient disponível para o código em runtime, mas não no momento da compilação. Se você não estiver configurando o cliente Apache-based HTTP, não precisará especificar uma dependência para ele.

No seguinte trecho XML de um pom.xml arquivo Maven, a dependência declarada com traz <artifactId>s3</artifactId> automaticamente o cliente HTTP. Apache-based Você não precisa declarar uma dependência especificamente para isso.

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

*Substitua a versão mostrada em vermelho pela versão do Java SDK que você deseja usar. Encontre as últimas novidades no Maven Central.

Com essas dependências, você não pode fazer nenhuma alteração explícita na configuração HTTP, porque a biblioteca Apache5HttpClient está somente no caminho de classe em tempo de execução.

Configuração necessária

Para configurar o Apache5HttpClient, você precisa adicionar uma dependência na biblioteca apache5-client em tempo de compilação.

Consulte o exemplo a seguir de um arquivo pom.xml do Maven para configurar o 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>

*Substitua a versão mostrada em vermelho pela versão do Java SDK que você deseja usar. Encontre as últimas novidades no Maven Central.

Usar e configurar o Apache5HttpClient

Você pode configurar uma instância do Apache5HttpClient junto com a criação de um cliente de serviço ou pode configurar uma única instância para compartilhar entre vários clientes de serviço.

Com qualquer uma das abordagens, você usa o Apache5HttpClient.Builder para configurar as propriedades do cliente HTTP baseado em Apache 5.

Prática recomendada: dedicar uma Apache5HttpClient instância a um cliente de serviço

Se você precisar configurar uma instância do Apache5HttpClient, recomendamos que você crie a instância Apache5HttpClient dedicada. Você pode fazer isso usando o ClientBuilder método http do construtor do cliente do serviço. Dessa forma, o ciclo de vida do cliente HTTP é gerenciado pelo SDK, o que ajuda a evitar possíveis vazamentos de memória se a instância do Apache5HttpClient não for fechada quando não for mais necessária.

O exemplo a seguir cria um S3Client e configura a instância incorporada dos valores maxConnections e Apache5HttpClient connectionTimeout. A instância HTTP é criada usando o método httpClientBuilder do S3Client.Builder.

Importações

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.

Abordagem alternativa: compartilhar uma instância do Apache5HttpClient

Para ajudar a reduzir o uso de recursos e memória do seu aplicativo, você pode configurar um Apache5HttpClient e compartilhá-lo entre vários clientes de serviço. O pool de conexões HTTP será compartilhado, o que reduz o uso de recursos.

nota

Quando uma instância do Apache5HttpClient é compartilhada, você deve fechá-la quando ela estiver pronta para ser descartada. O SDK não fechará a instância quando o cliente de serviço for fechado.

O exemplo a seguir configura um cliente Apache-based HTTP que é usado por dois clientes de serviço. A Apache5HttpClient instância configurada é passada para o método HttpClient de cada construtor. Quando os clientes do serviço e o cliente HTTP não são mais necessários, o código os fecha explicitamente. O código fecha o cliente HTTP por último.

Importações

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.