View a markdown version of this page

Configurare il client HTTP basato su Apache 5.x - AWS SDK for Java 2.x

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Configurare il client HTTP basato su Apache 5.x

L'SDK Apache5HttpClient è basato su Apache 5.x. HttpClient

Accedi a Apache5HttpClient

Nella maggior parte dei casi, si utilizza il Apache5HttpClient senza alcuna configurazione esplicita. Dichiari i tuoi clienti di servizio e l'SDK li configurerà Apache5HttpClient con valori standard per te.

Se desideri configurarlo in modo esplicito Apache5HttpClient o utilizzarlo con più client di servizio, devi renderlo disponibile per la configurazione.

Non è necessaria alcuna configurazione

Quando si dichiara una dipendenza da un client di servizio in Maven, l'SDK aggiunge una dipendenza di runtime dall'artefatto. apache5-client Ciò rende la Apache5HttpClient classe disponibile per il codice in fase di esecuzione, ma non in fase di compilazione. Se non si sta configurando il client Apache-based HTTP, non è necessario specificare una dipendenza per esso.

Nel seguente frammento XML di un pom.xml file Maven, la dipendenza dichiarata con <artifactId>s3</artifactId> introduce automaticamente il client HTTP. Apache-based Non è necessario dichiarare una dipendenza specifica.

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

*Sostituisci la versione mostrata in rosso con la versione di Java SDK che desideri utilizzare. Trova le ultime novità su Maven Central.

Con queste dipendenze, non è possibile apportare modifiche esplicite alla configurazione HTTP, poiché la Apache5HttpClient libreria si trova solo nel classpath di runtime.

Configurazione necessaria

Per configurare ilApache5HttpClient, è necessario aggiungere una dipendenza dalla libreria in fase di compilazione. apache5-client

Fai riferimento al seguente esempio di pom.xml file Maven per configurare. 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>

*Sostituisci la versione mostrata in rosso con la versione di Java SDK che desideri utilizzare. Trova le ultime novità su Maven Central.

Usa e configura il Apache5HttpClient

È possibile configurare un'istanza Apache5HttpClient insieme alla creazione di un client di servizio oppure è possibile configurare una singola istanza da condividere tra più client di servizio.

Con entrambi gli approcci, si utilizza il Apache5HttpClient.Builder per configurare le proprietà del client HTTP basato su Apache 5.

Procedura consigliata: dedicare un' Apache5HttpClient istanza a un client di servizio

Se devi configurare un'istanza diApache5HttpClient, ti consigliamo di creare l'Apache5HttpClientistanza dedicata. È possibile farlo utilizzando il ClientBuilder metodo http del generatore del client di servizio. In questo modo, il ciclo di vita del client HTTP è gestito dall'SDK, il che aiuta a evitare potenziali perdite di memoria se l'Apache5HttpClientistanza non viene chiusa quando non è più necessaria.

L'esempio seguente crea un S3Client e configura l'istanza incorporata di con i valori MaxConnections e ConnectionTimeout. Apache5HttpClient L'istanza HTTP viene creata utilizzando il metodo di. httpClientBuilder S3Client.Builder

Importazioni

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

Codice

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.

Approccio alternativo: condividere un'Apache5HttpClientistanza

Per ridurre l'utilizzo di risorse e memoria per l'applicazione, puoi configurarlo Apache5HttpClient e condividerlo tra più client di servizio. Il pool di connessioni HTTP verrà condiviso, il che riduce l'utilizzo delle risorse.

Nota

Quando un'Apache5HttpClientistanza è condivisa, è necessario chiuderla quando è pronta per essere eliminata. L'SDK non chiuderà l'istanza quando il client di servizio viene chiuso.

L'esempio seguente configura un client Apache-based HTTP utilizzato da due client di servizio. L'Apache5HttpClientistanza configurata viene passata al metodo HttpClient di ciascun builder. Quando i client di servizio e il client HTTP non sono più necessari, il codice li chiude esplicitamente. Il codice chiude il client HTTP per ultimo.

Importazioni

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;

Codice

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.