Actualizaciones en la versión 3 del SDK de OCI para Java
En este tema se explican algunos de los cambios clave introducidos en la versión 3 del SDK para Java de Oracle Cloud Infrastructure.
En este tema se explican algunos de los cambios clave introducidos en la versión 3 del SDK para Java de Oracle Cloud Infrastructure.
Consulte las notas de la versión para conocer todos los detalles y el tema Ejemplos para obtener más información.
Bibliotecas de cliente HTTP
De forma predeterminada, no hay configurada ninguna biblioteca de cliente HTTP. Debe seleccionar explícitamente una biblioteca de cliente HTTP. El SDK de OCI para Java ofrece las siguientes opciones para bibliotecas del cliente HTTP:
- Jakarta EE 8/Jersey 2:
bmc-common-httpclient-jersey
- Jakarta EE 9/Jersey 3:
bmc-common-httpclient-jersey3
Especifique la biblioteca de cliente HTTP declarando una dependencia en oci-java-sdk-common-httpclient-jersey
o oci-java-sdk-common-httpclient-jersey3
. Por ejemplo:
<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>
Devoluciones de llamada de invocación
En lugar de utilizar com.oracle.bmc.util.internal.Consumer<Invocation.Builder>
para registrar las devoluciones de llamada de invocación, utilice com.oracle.bmc.http.client.RequestInterceptor
. De esta manera, la implantación se separa de la elección del cliente HTTP.
Configuración de cliente simplificada
El método customizeClient(HttpClientBuilder builder)
para com.oracle.bmc.http.ClientConfigurator
ha sustituido a los métodos customizeBuilder
, customizeClient
y customizeRequest
. Por ejemplo:
IdentityClient.builder()
.clientConfigurator(
builder -> {
builder.property(
StandardClientProperties.BUFFER_REQUEST, false);
})
// ...
.build(authenticationDetailsProvider);
Las propiedades que se pueden definir dependen del cliente HTTP que utilice. También puede definir sus propias propiedades. Para obtener una lista completa de las propiedades configurables predefinidas, consulte lo siguiente:
Configuración | Ejemplo |
---|---|
Definición de si una solicitud debe almacenarse en buffer |
|
Definición de un administrador de conexiones Apache |
|
Definición de un almacén de confianza |
|
Definición de un almacén de claves |
|
Definición del contexto SSL |
|
Definición de un proxy |
|
Definición de un verificador de nombre de host |
|
También están disponibles los siguientes ejemplos de configuración del cliente:
Cambios en el conector Apache
Se han realizado varios cambios para separar la implantación del conector Apache de la elección del cliente HTTP.
com.oracle.bmc.http.ApacheConfigurator
se ha sustituido por com.oracle.bmc.http.client.jersey.ApacheClientProperties
o com.oracle.bmc.http.client.jersey3.ApacheClientProperties
(para Jersey 3).
El siguiente ejemplo es para los clientes que no deben almacenar en buffer las solicitudes en la memoria:
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 aquellos clientes que deben almacenar las solicitudes en buffer en la memoria, consulte el siguiente ejemplo:
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 y DisableNoConnectionReuseStrategyUsingApacheConfiguratorExample.java (Jersey 3) para obtener más información.
Considere también utilizar com.oracle.bmc.http.client.jersey.apacheconfigurator.ApacheConfigurator
del módulo de complemento oci-java-sdk-addons-apache-configurator-jersey
o com.oracle.bmc.http.client.jersey3.apacheconfigurator.ApacheConfigurator
del módulo de complemento oci-java-sdk-addons-apache-configurator-jersey3
.
Cambios en el disyuntor
El nombre de la interfaz del disyuntor se ha cambiado de com.oracle.bmc.circuitbreaker.JaxRsCircuitBreaker
a com.oracle.bmc.circuitbreaker.OciCircuitBreaker
.
En lugar de utilizar el constructor de com.oracle.bmc.circuitbreaker.CircuitBreakerConfiguration
, utilice el creador. El constructor ya no es público.
La clase com.oracle.bmc.util.CircuitBreakerUtils
ya no se ocupa de los disyuntores, solo de com.oracle.bmc.circuitbreaker.CircuitBreakerConfiguration
. Por lo tanto, se ha eliminado el campo DEFAULT_CIRCUIT_BREAKER
y el método getUserDefinedCircuitBreaker
. Si es necesario, cree un disyuntor nuevo a partir de la configuración predeterminada, utilizando para ello los métodos de creación de com.oracle.bmc.circuitbreaker.CircuitBreakerFactory
.