Introducción

En este tema se describe cómo instalar y configurar el SDK de Java para Oracle Cloud Infrastructure.

En este tema se describe cómo instalar y configurar el SDK de Java para Oracle Cloud Infrastructure.

Consejo

El SDK para Java está preconfigurado con sus credenciales y listo para su uso inmediato desde Cloud Shell. Para obtener más información sobre el uso del SDK para Java desde Cloud Shell, consulte Inicio rápido de Cloud Shell del SDK para Java.

Descarga del SDK de GitHub

Puede descargar el SDK para Java como archivo zip de GitHub. Contiene el SDK, todas sus dependencias, documentación y ejemplos. Para obtener la mejor compatibilidad y evitar problemas, use la versión de las dependencias incluidas en el archivo. Algunos problemas notables son:

  • Bouncy Castle: el SDK incorpora la versión 1.60 (incluida en esta distribución). Si necesita conformidad de FIPS, consulte Uso de BC-FIPS en lugar de Bouncy Castle.
  • Núcleo de Jersey y cliente: el SDK incluye la versión 2.24.1, que es necesaria para soportar cargas de objetos grandes en Object Storage. Las versiones anteriores no soportan cargas superiores a ~2,1 GB.
  • API de Jax-RS: el SDK incluye la versión 2.0.1 de la especificación. Las versiones anteriores causarán problemas.
Nota

El SDK para Java está incluido en Jersey (incluido en esta distribución), pero también puede utilizar su propia implantación JAX-RS. Para obtener más información, consulte Uso de su propia implantación de JAX-RS

Instalación con yum

Si utiliza Oracle Linux 7 u 8, puede utilizar yum para instalar el SDK de OCI para Java.

Para Oracle Linux 7:

sudo yum-config-manager --enable ol7_developer
sudo yum install java-oci-sdk
Para Oracle Linux 8:
sudo yum-config-manager --enable ol8_developer
sudo yum install java-oci-sdk

El archivo jar de OCI se ubicará en: /usr/lib64/java-oci-sdk/lib/oci-java-sdk-full-<version>.jar y las bibliotecas de terceros estarán en /usr/lib64/java-oci-sdk/third-party/lib.

Puede agregar las siguientes entradas a classpath: /usr/lib64/java-oci-sdk/lib/oci-java-sdk-full-<version>.jar:/usr/lib64/java-oci-sdk/third-party/lib/* Por ejemplo:
javac -cp "/usr/lib64/java-oci-sdk/third-party/lib/*:/usr/lib64/java-oci-sdk/lib/oci-java-sdk-full-1.8.2.jar" MyFile.java

Configuración del SDK

Los servicios de SDK necesitan dos tipos de configuración: credenciales y valores HTTP del cliente.

Configuración de credenciales

En primer lugar, debe configurar sus credenciales y el archivo de configuración. Para obtener instrucciones, consulte Archivo de configuración de SDK y CLI.

A continuación, debe configurar el cliente para usar las credenciales. Las credenciales se sintetizan mediante una interfaz AuthenticationDetailsProvider. Sin embargo, los clientes pueden implantar esta opción. Hemos incluido una clase de POJO/creador sencilla que le ayudará con esta tarea (SimpleAuthenticationDetailsProvider).

  • Puede cargar una configuración con o sin un perfil:

    ConfigFile config 
        = ConfigFileReader.parse("~/.oci/config");
    ConfigFile configWithProfile 
        = ConfigFileReader.parse("~/.oci/config", "DEFAULT");
  • El proveedor de claves privadas se puede crear con la ruta de acceso de archivo directamente o mediante el archivo de configuración:

    Supplier<InputStream> privateKeySupplier 
        = new SimplePrivateKeySupplier("~/.oci/oci_api_key.pem");
    Supplier<InputStream> privateKeySupplierFromConfigEntry 
        = new SimplePrivateKeySupplier(config.get("key_file"));
  • Para crear un proveedor de autenticación con el creador:

    AuthenticationDetailsProvider provider 
        = SimpleAuthenticationDetailsProvider.builder()
            .tenantId("myTenantId")
            .userId("myUserId")
            .fingerprint("myFingerprint")
            .privateKeySupplier(privateKeySupplier)
            .build();
  • Para crear un proveedor de autenticación mediante el creador con un archivo de configuración:

    AuthenticationDetailsProvider provider 
        = SimpleAuthenticationDetailsProvider.builder()
            .tenantId(config.get("tenancy"))
            .userId(config.get("user"))
            .fingerprint(config.get("fingerprint"))
            .privateKeySupplier(privateKeySupplier)
            .build();
  • Por último, si utiliza claves de archivo de configuración estándar y la ubicación de archivo de configuración estándar, puede simplificar el proceso con ConfigFileAuthenticationDetailsProvider:

    AuthenticationDetailsProvider provider 
        = new ConfigFileAuthenticationDetailsProvider("ADMIN_USER");

Configuración de opciones del cliente

Cree una configuración del cliente a través de la clase ClientConfiguration. Si no proporciona su propia configuración, el SDK para Java utiliza una configuración por defecto. Para proporcionar su propia configuración, utilice lo siguiente:

ClientConfiguration clientConfig 
    = ClientConfiguration.builder()
        .connectionTimeoutMillis(3000)
        .readTimeoutMillis(60000)
        .build();

Cuando tenga una configuración de credenciales y la configuración de cliente opcional, puede empezar a crear instancias de servicio.

Para obtener un ejemplo de código que muestre cómo configurar y utilizar la y leer los timeouts en la configuración del cliente, consulte el ejemplo de timeout de configuración de cliente en GitHub.

Configuración de opciones personalizadas

En el archivo de configuración, puede insertar pares de clave-valor personalizados que defina y, a continuación, hacer referencia a ellos según sea necesario. Por ejemplo, puede especificar un ID de compartimento de uso frecuente en el archivo de configuración:

[DEFAULT]
user=ocid1.user.oc1..aaaaaaaat5nvwcna5j6aqzjcmdy5eqbb6qt2jvpkanghtgdaqedqw3rynjq
fingerprint=20:3b:97:13:55:1c:5b:0d:d3:37:d8:50:4e:c5:3a:34
key_file=~/.oci/oci_api_key.pem
tenancy=ocid1.tenancy.oc1..<unique_ID>


custom_compartment_id=ocid1.compartment.oc1..<unique_ID>



A continuación, puede recuperar el valor:

ConfigFile config 
    = ConfigFileReader.parse("~/.oci/config");

String compartmentId = config.get("custom_compartment_id");

Uso del SDK para Java

Existen dos formas de utilizar el SDK de Oracle Cloud Infrastructure para Java en su proyecto.

  • Importe oci-java-sdk-bom, seguido de la biblioteca de cliente HTTP y las dependencias del proyecto.

    La biblioteca de cliente HTTP se puede configurar y no se selecciona ninguna biblioteca por defecto. Actualmente, el SDK de OCI para Java permite elegir entre las siguientes bibliotecas de cliente HTTP:

    Debe seleccionar explícitamente la biblioteca declarando una dependencia en oci-java-sdk-common-httpclient-jersey o oci-java-sdk-common-httpclient-jersey3. Por ejemplo:

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.oracle.oci.sdk</groupId>
          <artifactId>oci-java-sdk-bom</artifactId>
          <!-- replace the version below with your required version -->
          <version>3.0.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    <dependencies>
      <dependency>
        <!-- Since this is the "application" pom.xml, choose the httpclient to use. -->
        <groupId>com.oracle.oci.sdk</groupId>
        <artifactId>oci-java-sdk-common-httpclient-jersey</artifactId>
      </dependency>
      <dependency>
        <groupId>com.oracle.oci.sdk</groupId>
        <artifactId>oci-java-sdk-audit</artifactId>
      </dependency>
      <dependency>
        <groupId>com.oracle.oci.sdk</groupId>
        <artifactId>oci-java-sdk-core</artifactId>
      </dependency>
      <dependency>
        <groupId>com.oracle.oci.sdk</groupId>
        <artifactId>oci-java-sdk-database</artifactId>
      </dependency>
      <!-- more dependencies if needed -->
    </dependencies>
  • Añada la dependencia sombreada oci-java-sdk-shaded-full al archivo pom. Puede utilizar la dependencia sombreada para incluir todas las clases de terceros y sus dependencias transitivas; para ello, cambie el nombre e inclúyalas en el proyecto. Contiene un Uber JAR, que es básicamente una combinación de varios JAR. Se cambia el nombre de todos los paquetes de dentro de Uber JAR. De esta forma, se evitarán los conflictos entre las dependencias del SDK de Oracle Cloud Infrastructure y las dependencias de terceros que usted pueda utilizar en el proyecto.

    Por ejemplo, las clases de org.apache.commons se reubican en shaded.com.oracle.oci.javasdk.org.apache.commons.

    El contenido de Uber JAR es el siguiente:

    shaded/com/oracle/oci/javasdk/org/apache/commons/codec/BinaryDecoder.class
    shaded/com/oracle/oci/javasdk/org/apache/commons/logging/LogFactory.class

    Si utiliza Maven para gestionar las dependencias, puede encontrar la dependencia sombreada más reciente en el repositorio de Maven.

    Añada la versión más reciente de oci-java-sdk-shaded-full a sus dependencias:

    <dependency>
      <groupId>com.oracle.oci.sdk</groupId>
      <artifactId>oci-java-sdk-shaded-full</artifactId>
      <!-- replace the version below with the latest version -->
      <version>3.0.0</version>
    <dependency>