開始

このトピックでは、Oracle Cloud Infrastructure SDK for Javaをインストールして構成する方法について説明します。

このトピックでは、Oracle Cloud Infrastructure SDK for Javaをインストールして構成する方法について説明します。

ヒント

SDK for Javaは、資格証明を使用して事前構成されており、クラウド・シェル内からすぐに使用できます。クラウド・シェル内からのSDK for Javaの使用の詳細は、SDK for Javaのクラウド・シェル・クイック・スタートを参照してください。

GitHubからのSDKのダウンロード

SDK for Javaは、GitHubからzipアーカイブとしてダウンロードできます。これには、SDK、そのすべての依存関係、ドキュメントおよびサンプルが含まれています。互換性を最適に保ち、問題を回避するために、アーカイブに含まれる依存関係のバージョンを使用します。重要な問題を次に示します:

  • Bouncy Castle: SDKバンドル1.60 (このディストリビューションに含まれています)。FIPS準拠が必要な場合は、Bouncy CastleのかわりにBC-FIPSを使用を参照してください。
  • Jersey CoreおよびClient: SDKには2.24.1がバンドルされます。これは、オブジェクト・ストレージへのラージ・オブジェクトのアップロードのサポートに必要です。旧バージョンでは、2.1GBを超えるアップロードはサポートされません。
  • Jax-RS API: SDKには仕様の2.0.1がバンドルされます。旧バージョンでは問題が発生します。
ノート

SDK for JavaにはJersey (このディストリビューションに含まれる)がバンドルされていますが、独自のJAX-RS実装を使用することもできます。詳細は、独自のJAX-RS実装の使用を参照してください

yumを使用したインストール

Oracle Linux 7または8を使用している場合は、yumを使用してOCI SDK for Javaをインストールできます。

Oracle Linux 7の場合:

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

OCI jarファイルは/usr/lib64/java-oci-sdk/lib/oci-java-sdk-full-<version>.jar、サードパーティ・ライブラリは /usr/lib64/java-oci-sdk/third-party/libに配置されます。

クラスパスに次のエントリを追加できます: /usr/lib64/java-oci-sdk/lib/oci-java-sdk-full-<version>.jar:/usr/lib64/java-oci-sdk/third-party/lib/* 例:
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

SDKの構成

SDKサービスには、資格証明とクライアント側HTTP設定という2つのタイプの構成が必要です。

資格証明の構成

最初に、資格証明および構成ファイルを設定する必要があります。手順は、SDKおよびCLIの構成ファイルを参照してください。

次に、資格証明を使用するようにクライアントを設定する必要があります。資格証明は、AuthenticationDetailsProviderインタフェースを介して抽象化されます。ユーザーの選択にかかわらず、クライアントはこれを実装できます。このタスクに役立つように単純なPOJO/ビルダー・クラス(SimpleAuthenticationDetailsProvider)が組み込まれています。

  • プロファイルの有無に関係なく構成をロードできます:

    ConfigFile config 
        = ConfigFileReader.parse("~/.oci/config");
    ConfigFile configWithProfile 
        = ConfigFileReader.parse("~/.oci/config", "DEFAULT");
  • 秘密キー・サプライヤは、ファイル・パスで直接作成することも、構成ファイルを使用して作成することもできます:

    Supplier<InputStream> privateKeySupplier 
        = new SimplePrivateKeySupplier("~/.oci/oci_api_key.pem");
    Supplier<InputStream> privateKeySupplierFromConfigEntry 
        = new SimplePrivateKeySupplier(config.get("key_file"));
  • ビルダーを使用して認証プロバイダを作成するには:

    AuthenticationDetailsProvider provider 
        = SimpleAuthenticationDetailsProvider.builder()
            .tenantId("myTenantId")
            .userId("myUserId")
            .fingerprint("myFingerprint")
            .privateKeySupplier(privateKeySupplier)
            .build();
  • ビルダーを構成ファイルを使用して認証プロバイダを作成するには:

    AuthenticationDetailsProvider provider 
        = SimpleAuthenticationDetailsProvider.builder()
            .tenantId(config.get("tenancy"))
            .userId(config.get("user"))
            .fingerprint(config.get("fingerprint"))
            .privateKeySupplier(privateKeySupplier)
            .build();
  • また、標準構成ファイルのキーと標準構成ファイルの場所を使用する場合は、ConfigFileAuthenticationDetailsProviderを使用して、さらに単純化できます:

    AuthenticationDetailsProvider provider 
        = new ConfigFileAuthenticationDetailsProvider("ADMIN_USER");

クライアント側オプションの構成

クライアント側の構成を作成するには、ClientConfigurationクラスを使用します。独自の構成を指定しないと、SDK for Javaによってデフォルトの構成が使用されます。独自の構成を指定するには、次を使用します:

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

資格証明の構成とオプションのクライアント構成の両方が準備できたら、サービス・インスタンスの作成を開始できます。

クライアント構成で接続と読取りのタイムアウトを設定および使用する方法を示すコード・サンプルについては、GitHubでのクライアント構成タイムアウトの例を参照してください。

カスタム・オプションの構成

構成ファイルに、定義するカスタムのキーと値のペアを挿入し、必要に応じてそれらを参照できます。たとえば、頻繁に使用されるコンパートメントIDを構成ファイルに指定できます:

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



後で、値を取得できます:

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

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

SDK for Javaの使用

プロジェクトでOracle Cloud Infrastructure SDK for Javaを使用するには、2つの方法があります。

  • oci-java-sdk-bomをインポートしてから、HTTPクライアント・ライブラリおよびプロジェクト依存関係をインポートします。

    HTTPクライアントライブラリは構成可能で、デフォルトではライブラリが選択されていません。現在、OCI SDK for Javaでは、次のHTTPクライアント・ライブラリから選択できます:

    oci-java-sdk-common-httpclient-jerseyまたはoci-java-sdk-common-httpclient-jersey3に対する依存関係を宣言して、ライブラリを明示的に選択する必要があります。例:

    <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>
  • pomファイルにoci-java-sdk-shaded-fullシェーディング依存関係を追加します。シェーディング依存関係を使用して、すべてのサードパーティ・クラスとその推移依存関係を含めるには、名前を変更してそれらをプロジェクトに含めます。これには、基本的に複数のJARの組合せであるUber JARが含まれます。Uber JAR内のすべてのパッケージの名前が変更されます。これにより、Oracle Cloud Infrastructure SDK依存関係と、プロジェクトで使用している可能性のあるサードパーティ依存関係との間の競合が防止されます。

    たとえば、org.apache.commonsのクラスはshaded.com.oracle.oci.javasdk.org.apache.commonsに再配置されます。

    Uber JARの内容は次のとおりです:

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

    Mavenを使用して依存関係を管理している場合は、最新のシェーディング依存関係をMavenリポジトリで確認できます。

    最新バージョンのoci-java-sdk-shaded-fullを依存関係に追加します:

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