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