Mises à jour de la version 3 de la trousse SDK OCI pour Java

Cette rubrique décrit certaines des principales modifications introduites dans la version 3 de la trousse SDK Oracle Cloud Infrastructure pour Java.

Cette rubrique décrit certaines des principales modifications introduites dans la version 3 de la trousse SDK Oracle Cloud Infrastructure pour Java.

Note

Pour plus d'informations, reportez-vous aux notes de version et consultez la rubrique Exemples.

Bibliothèques de client HTTP

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

Spécifiez la bibliothèque de 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>

Rappels d'appel

Au lieu d'utiliser com.oracle.bmc.util.internal.Consumer<Invocation.Builder> pour enregistrer des rappels d'appel, utilisez plutôt com.oracle.bmc.http.client.RequestInterceptor. Cela dissocie la mise en oeuvre du choix du client HTTP.

Configuration de 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, consultez les pages suivantes :

Exemples de configuration de client
Configuration Exemple
Définir si une demande doit être mise en mémoire tampon
builder.property(
                StandardClientProperties.BUFFER_REQUEST, shouldBuffer);
Définition d'un gestionnaire de connexions Apache
builder.property(
                ApacheClientProperties.CONNECTION_MANAGER,
                connectionManager);
Définition d'un magasin de certificats SSL
// Server CA goes into the trust store
        KeyStore trustStore =
                keystoreGenerator.createTrustStoreWithServerCa(tlsConfig.getCaBundle());
        builder.property(StandardClientProperties.TRUST_STORE, trustStore);
Définition d'un magasin 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 mandataire
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 de client suivants sont également disponibles :

Modifications du connecteur Apache

Plusieurs modifications ont été apportées afin de dissocier la mise en oeuvre 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 les demandes en mémoire tampon :

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 devraient mettre les demandes en mémoire tampon, consultez 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, voir DisableNoConnectionReuseStrategyUsingApacheConfiguratorExample.java et DisableNoConnectionReuseStrategyUsingApacheConfiguratorExample.java (Jersey 3).

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

Pour plus d'informations, voir DisableNoConnectionReuseStrategyUsingApacheConfiguratorExample.java et DisableNoConnectionReuseStrategyUsingApacheConfiguratorExample.java (Jersey 3).

Modifications du disjoncteur

L'interface du disjoncteur a été renommée de com.oracle.bmc.circuitbreaker.JaxRsCircuitBreaker en 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 gère plus les disjoncteurs, seulement com.oracle.bmc.circuitbreaker.CircuitBreakerConfiguration. Par conséquent, le champ DEFAULT_CIRCUIT_BREAKER et la méthode getUserDefinedCircuitBreaker ont été supprimés. Construisez un nouveau disjoncteur à partir de la configuration par défaut, si nécessaire, à l'aide des méthodes de compilation de com.oracle.bmc.circuitbreaker.CircuitBreakerFactory.