Atualizações na Versão 3 do OCI SDK para Java

Este tópico explica algumas das principais alterações introduzidas na versão 3 do Oracle Cloud Infrastructure SDK para Java.

Este tópico explica algumas das principais alterações introduzidas na versão 3 do Oracle Cloud Infrastructure SDK para Java.

Observação

Consulte as notas da release para obter detalhes completos e consulte o tópico Exemplos para obter mais informações.

Bibliotecas de Cliente HTTP

Nenhuma biblioteca de cliente HTTP está configurada por padrão. Você deve escolher explicitamente uma biblioteca de cliente HTTP. O OCI SDK para Java oferece as seguintes opções para bibliotecas cliente HTTP:

Especifique a biblioteca de cliente HTTP declarando uma dependência em oci-java-sdk-common-httpclient-jersey ou oci-java-sdk-common-httpclient-jersey3. Por exemplo:

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

Callbacks de chamada

Em vez de usar com.oracle.bmc.util.internal.Consumer<Invocation.Builder> para registrar callbacks de chamada, use com.oracle.bmc.http.client.RequestInterceptor. A implementação da opção do cliente HTTP é desassociada.

Configuração Simplificada do Cliente

O método customizeClient(HttpClientBuilder builder) para com.oracle.bmc.http.ClientConfigurator substituiu os métodos customizeBuilder, customizeClient e customizeRequest. Por exemplo:

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

As propriedades que podem ser definidas dependem do cliente HTTP que você está usando. Você também pode definir suas próprias propriedades. Para obter uma lista abrangente de propriedades definíveis predefinidas, consulte o seguinte:

Exemplos de Configuração do Cliente
Configuração Exemplo
Definindo se uma solicitação deve ser armazenada em buffer
builder.property(
                StandardClientProperties.BUFFER_REQUEST, shouldBuffer);
Definindo um gerenciador de conexões Apache
builder.property(
                ApacheClientProperties.CONNECTION_MANAGER,
                connectionManager);
Definindo um armazenamento confiável
// Server CA goes into the trust store
        KeyStore trustStore =
                keystoreGenerator.createTrustStoreWithServerCa(tlsConfig.getCaBundle());
        builder.property(StandardClientProperties.TRUST_STORE, trustStore);
Definindo um armazenamento de chaves
builder.property(
                StandardClientProperties.KEY_STORE,
                new KeyStoreWithPassword(keyStore, keystorePassword));
Definindo o contexto SSL
builder.property(
                StandardClientProperties.SSL_CONTEXT, sslContext);
Definindo um proxy
builder.property(
                StandardClientProperties.PROXY, proxyConfig);
Definindo um verificador de nome de host
builder.property(
                StandardClientProperties.HOSTNAME_VERIFIER,
                NoopHostnameVerifier.INSTANCE);

Os seguintes exemplos de configuração de cliente também estão disponíveis:

Alterações no Apache Connector

Várias alterações foram feitas para separar a implementação do Apache Connector da escolha do cliente HTTP.

com.oracle.bmc.http.ApacheConfigurator foi substituído por com.oracle.bmc.http.client.jersey.ApacheClientProperties ou com.oracle.bmc.http.client.jersey3.ApacheClientProperties (para Jersey 3).

O exemplo a seguir é para clientes que não devem armazenar em buffer solicitações na memória:

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

Para os clientes que as devem armazenar solicitações na memória em buffer, consulte o seguinte exemplo:

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

Consulte DisableNoConnectionReuseStrategyUsingApacheConfiguratorExample.java e DisableNoConnectionReuseStrategyUsingApacheConfiguratorExample.java (Jersey 3) para obter mais informações.

Considere também o uso de com.oracle.bmc.http.client.jersey.apacheconfigurator.ApacheConfigurator do módulo de complemento oci-java-sdk-addons-apache-configurator-jersey ou com.oracle.bmc.http.client.jersey3.apacheconfigurator.ApacheConfigurator do módulo de complemento oci-java-sdk-addons-apache-configurator-jersey3.

Consulte DisableNoConnectionReuseStrategyUsingApacheConfiguratorExample.java e DisableNoConnectionReuseStrategyUsingApacheConfiguratorExample.java (Jersey 3) para obter mais informações.

Alterações do Disjuntor

A interface do disjuntor foi renomeada de com.oracle.bmc.circuitbreaker.JaxRsCircuitBreaker para com.oracle.bmc.circuitbreaker.OciCircuitBreaker.

Em vez de usar o construtor com.oracle.bmc.circuitbreaker.CircuitBreakerConfiguration, use o builder. O construtor não é mais público.

A classe com.oracle.bmc.util.CircuitBreakerUtils não lida mais com disjuntores, apenas com com.oracle.bmc.circuitbreaker.CircuitBreakerConfiguration. Portanto, o campo DEFAULT_CIRCUIT_BREAKER e o método getUserDefinedCircuitBreaker foram removidos. Construa um novo disjuntor com base na configuração padrão, se necessário, usando os métodos de criação em com.oracle.bmc.circuitbreaker.CircuitBreakerFactory.