Mises à jour de la version 3 du kit SDK OCI pour Java

Cette rubrique explique certaines modifications clés introduites dans la version 3 du kit SDK Oracle Cloud Infrastructure pour Java.

Cette rubrique explique certaines modifications clés introduites dans la version 3 du kit SDK Oracle Cloud Infrastructure pour Java.

Remarque

Pour plus d'informations, reportez-vous aux notes sur la version afin de consulter les détails complets et à la rubrique Exemples.

Bibliothèques client HTTP

Aucune bibliothèque client HTTP n'est configurée par défaut. Vous devez choisir explicitement une bibliothèque client HTTP. Le kit SDK OCI pour Java offre les choix suivants concernant les bibliothèques client HTTP :

Indiquez la bibliothèque client HTTP en déclarant une dépendance à oci-java-sdk-common-httpclient-jersey ou oci-java-sdk-common-httpclient-jersey3. Par exemple :

<dependency>
    <!-- Since this is the "application" pom.xml, we do want to
         choose the httpclient to use. -->
    <groupId>com.oracle.oci.sdk</groupId>
    <artifactId>oci-java-sdk-common-httpclient-jersey</artifactId>
</dependency>

Fonctions callback d'appel

Utilisez com.oracle.bmc.http.client.RequestInterceptor au lieu de com.oracle.bmc.util.internal.Consumer<Invocation.Builder> pour inscrire des fonctions callback d'appel. Cette opération sépare l'implémentation du choix du client HTTP.

Configuration client simplifiée

La méthode customizeClient(HttpClientBuilder builder) pour com.oracle.bmc.http.ClientConfigurator a remplacé les méthodes customizeBuilder, customizeClient et customizeRequest. Par exemple :

    IdentityClient.builder()
                  .clientConfigurator(
                          builder -> {
                      builder.property(
                              StandardClientProperties.BUFFER_REQUEST, false);
                  })
                  // ...
                  .build(authenticationDetailsProvider);

Les propriétés pouvant être définies dépendent du client HTTP que vous utilisez. Vous pouvez également définir vos propres propriétés. Pour obtenir la liste complète des propriétés configurables prédéfinies, reportez-vous aux éléments suivants :

Exemples de configuration client
Configuration Exemple
Définition de la mise en mémoire tampon d'une demande
builder.property(
                StandardClientProperties.BUFFER_REQUEST, shouldBuffer);
Définition d'un gestionnaire de connexions Apache
builder.property(
                ApacheClientProperties.CONNECTION_MANAGER,
                connectionManager);
Définition d'un truststore
// Server CA goes into the trust store
        KeyStore trustStore =
                keystoreGenerator.createTrustStoreWithServerCa(tlsConfig.getCaBundle());
        builder.property(StandardClientProperties.TRUST_STORE, trustStore);
Définition d'un fichier de clés
builder.property(
                StandardClientProperties.KEY_STORE,
                new KeyStoreWithPassword(keyStore, keystorePassword));
Définition du contexte SSL
builder.property(
                StandardClientProperties.SSL_CONTEXT, sslContext);
Définition d'un proxy
builder.property(
                StandardClientProperties.PROXY, proxyConfig);
Définition d'un vérificateur de nom d'hôte
builder.property(
                StandardClientProperties.HOSTNAME_VERIFIER,
                NoopHostnameVerifier.INSTANCE);

Les exemples de configuration client suivants sont également disponibles :

Modifications relatives au connecteur Apache

Plusieurs modifications ont été apportées afin de séparer l'implémentation du connecteur Apache du choix du client HTTP.

com.oracle.bmc.http.ApacheConfigurator a été remplacé par com.oracle.bmc.http.client.jersey.ApacheClientProperties ou com.oracle.bmc.http.client.jersey3.ApacheClientProperties (pour Jersey 3).

L'exemple suivant concerne les clients qui ne doivent pas mettre en mémoire tampon les demandes :

ObjectStorageClient nonBufferingObjectStorageClient = ObjectStorageClient
    .builder()
    .clientConfigurator(builder -> {
        builder.property(StandardClientProperties.BUFFER_REQUEST, false);
        builder.property(ApacheClientProperties.RETRY_HANDLER, null);
        builder.property(ApacheClientProperties.REUSE_STRATEGY, null);
    })
    .region(Region.US_PHOENIX_1)
    .build(provider);

Pour les clients qui doivent mettre en mémoire tampon les demandes, reportez-vous à l'exemple suivant :

IdentityClient bufferingIdentityClient = IdentityClient
    .builder()
    .clientConfigurator(builder -> {
        builder.property(StandardClientProperties.BUFFER_REQUEST, true);
        builder.property(ApacheClientProperties.RETRY_HANDLER, null);
        builder.property(ApacheClientProperties.REUSE_STRATEGY, null);
    })
    .region(Region.US_PHOENIX_1)
    .build(provider);

Pour plus d'informations, reportez-vous à DisableNoConnectionReuseStrategyUsingApacheConfiguratorExample.java et à DisableNoConnectionReuseStrategyUsingApacheConfiguratorExample.java (Jersey 3).

Envisagez également d'utiliser com.oracle.bmc.http.client.jersey.apacheconfigurator.ApacheConfigurator du module d'extension oci-java-sdk-addons-apache-configurator-jersey, ou com.oracle.bmc.http.client.jersey3.apacheconfigurator.ApacheConfigurator du module d'extension oci-java-sdk-addons-apache-configurator-jersey3.

Pour plus d'informations, reportez-vous à DisableNoConnectionReuseStrategyUsingApacheConfiguratorExample.java et à DisableNoConnectionReuseStrategyUsingApacheConfiguratorExample.java (Jersey 3).

Modifications relatives au disjoncteur

L'interface du disjoncteur nommée com.oracle.bmc.circuitbreaker.JaxRsCircuitBreaker a été renommée com.oracle.bmc.circuitbreaker.OciCircuitBreaker.

Au lieu d'utiliser le constructeur de com.oracle.bmc.circuitbreaker.CircuitBreakerConfiguration, utilisez le générateur. Le constructeur n'est plus public.

La classe com.oracle.bmc.util.CircuitBreakerUtils ne concerne plus les disjoncteurs, mais uniquement com.oracle.bmc.circuitbreaker.CircuitBreakerConfiguration. Par conséquent, le champ DEFAULT_CIRCUIT_BREAKER et la méthode getUserDefinedCircuitBreaker ont été enlevés. Créez un disjoncteur à partir de la configuration par défaut si nécessaire à l'aide des méthodes de construction dans com.oracle.bmc.circuitbreaker.CircuitBreakerFactory.