Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Den Apache-based HTTP-Client konfigurieren
Anmerkung
ApacheHttpClientist veraltet, da sich Apache HttpClient 4.x im Wartungsmodus befindet. Verwenden Sie das auf Apache 5.x basierende HttpClient . Apache5HttpClient
Die SDKs ApacheHttpClient basieren auf Apache HttpClient
Das SDK bietet auch das UrlConnectionHttpClientUrlConnectionHttpClient Sie unterDen URLConnection basierten HTTP-Client konfigurieren.
Die vollständigen Konfigurationsoptionen, die Ihnen für den zur Verfügung stehenApacheHttpClient, finden Sie unter ApacheHttpClient.Builder
Greifen Sie auf ApacheHttpClient
Konfiguration erforderlich
Um die verwenden zu könnenApacheHttpClient, müssen Sie bei der Kompilierung eine Abhängigkeit von der apache-client Bibliothek hinzufügen.
Sehen Sie sich das folgende Beispiel einer pom.xml Maven-Datei an, um die ApacheHttpClient zu konfigurieren.
<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 apache-client dependency, ApacheHttpClient will be added to the compile classpath so you can configure it. --> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>apache-client</artifactId> </dependency> </dependencies>
Verwenden und konfigurieren Sie das ApacheHttpClient
Sie können eine Instanz von ApacheHttpClient konfigurieren und gleichzeitig einen Service-Client erstellen, oder Sie können eine einzelne Instanz so konfigurieren, dass sie von mehreren Service-Clients gemeinsam genutzt wird.
Bei beiden Ansätzen verwenden Sie den, ApacheHttpClient.Builder um die Eigenschaften für den Apache-based HTTP-Client zu konfigurieren.
Bewährtes Verfahren: Weisen Sie eine ApacheHttpClient Instanz einem Service-Client zu
Wenn Sie eine Instanz von konfigurieren müssen, empfehlen wir IhnenApacheHttpClient, die dedizierte ApacheHttpClient Instanz zu erstellen. Sie können dies tun, indem Sie die httpClientBuilder Methode des Builders des Service-Clients verwenden. Auf diese Weise wird der Lebenszyklus des HTTP-Clients vom SDK verwaltet, wodurch potenzielle Speicherlecks vermieden werden, wenn die ApacheHttpClient Instanz nicht geschlossen wird, wenn sie nicht mehr benötigt wird.
Im folgenden Beispiel wird eine eingebettete Instanz von ApacheHttpClient with S3Client and values erstellt maxConnections und connectionTimeout konfiguriert. Die HTTP-Instanz wird mit der httpClientBuilder Methode von S3Client.Builder erstellt.
Importe
import software.amazon.awssdk.http.apache.ApacheHttpClient; import software.amazon.awssdk.services.s3.S3Client; import java.time.Duration;
Code
S3Client s3Client = S3Client // Singleton: Use the s3Client for all requests. .builder() .httpClientBuilder(ApacheHttpClient.builder() .maxConnections(100) .connectionTimeout(Duration.ofSeconds(5)) ).build(); // Perform work with the s3Client. s3Client.close(); // Requests completed: Close all service clients.
Alternativer Ansatz: Teilen Sie eine ApacheHttpClient Instanz
Um die Ressourcen- und Speicherauslastung für Ihre Anwendung gering zu halten, können Sie eine konfigurieren ApacheHttpClient und sie für mehrere Service-Clients gemeinsam nutzen. Der HTTP-Verbindungspool wird gemeinsam genutzt, wodurch der Ressourcenverbrauch gesenkt wird.
Anmerkung
Wenn eine ApacheHttpClient Instanz gemeinsam genutzt wird, müssen Sie sie schließen, wenn sie bereit ist, gelöscht zu werden. Das SDK schließt die Instanz nicht, wenn der Service Client geschlossen wird.
Im folgenden Beispiel wird ein Apache-based HTTP-Client konfiguriert, der von zwei Service-Clients verwendet wird. Die konfigurierte ApacheHttpClient Instanz wird an die httpClient Methode jedes Builders übergeben. Wenn die Service-Clients und der HTTP-Client nicht mehr benötigt werden, werden sie vom Code explizit geschlossen. Der Code schließt den HTTP-Client zuletzt.
Importe
import software.amazon.awssdk.http.SdkHttpClient; import software.amazon.awssdk.http.apache.ApacheHttpClient; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.s3.S3Client;
Code
SdkHttpClient apacheHttpClient = ApacheHttpClient.builder() .maxConnections(100).build(); // Singletons: Use the s3Client and dynamoDbClient for all requests. S3Client s3Client = S3Client.builder() .httpClient(apacheHttpClient).build(); DynamoDbClient dynamoDbClient = DynamoDbClient.builder() .httpClient(apacheHttpClient).build(); // Perform work with the s3Client and dynamoDbClient. // Requests completed: Close all service clients. s3Client.close(); dynamoDbClient.close(); apacheHttpClient.close(); // Explicitly close apacheHttpClient.
Beispiel für eine Proxykonfiguration
Der folgende Codeausschnitt verwendet den Proxykonfigurationsgenerator für den Apache HTTP-Client.
SdkHttpClient apacheHttpClient = ApacheHttpClient.builder() .proxyConfiguration(ProxyConfiguration.builder() .endpoint(URI.create("http://example.com:1234")) .username("username") .password("password") .addNonProxyHost("localhost") .addNonProxyHost("host.example.com") .build()) .build();
Die entsprechenden Java-Systemeigenschaften für die Proxykonfiguration werden im folgenden Befehlszeilenausschnitt dargestellt.
$ java -Dhttp.proxyHost=example.com -Dhttp.proxyPort=1234 -Dhttp.proxyUser=username \ -Dhttp.proxyPassword=password -Dhttp.nonProxyHosts=localhost|host.example.com -cp ... App
Das entsprechende Setup, das Umgebungsvariablen verwendet, ist:
// Set the following environment variables. // $ export HTTP_PROXY="http://username:password@example.com:1234" // $ export NO_PROXY="localhost|host.example.com" // Set the 'useSystemPropertyValues' to false on the proxy configuration. SdkHttpClient apacheHttpClient = ApacheHttpClient.builder() .proxyConfiguration(ProxyConfiguration.builder() .useSystemPropertyValues(Boolean.FALSE) .build()) .build(); // Run the application. // $ java -cp ... App
Anmerkung
Der Apache HTTP-Client unterstützt derzeit keine HTTPS-Proxy-Systemeigenschaften oder die HTTPS_PROXY-Umgebungsvariable.