開始
このトピックでは、Oracle Cloud Infrastructure SDK for Javaをインストールして構成する方法について説明します。
このトピックでは、Oracle Cloud Infrastructure SDK for Javaをインストールして構成する方法について説明します。
SDK for Javaは、資格証明を使用して事前構成されており、クラウド・シェル内からすぐに使用できます。クラウド・シェル内からのSDK for Javaの使用の詳細は、SDK for Javaのクラウド・シェル・クイック・スタートを参照してください。
リソース・マネージャを使用したインストール
リソース・マネージャを使用して、コンパートメントのコンピュート・インスタンスにOracle Cloud Development Kitをインストールできます。Oracle Cloud Development Kitには、SDK for Javaとその他のOracle開発ツールが含まれます。
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実装の使用を参照してください
MavenまたはJCenterからのSDKのダウンロード
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
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クライアント・ライブラリから選択できます:
- Jakarta EE 8/Jersey 2 -
oci-common-httpclient-jersey
- Jakarta EE 9/Jersey 3 -
oci-common-httpclient-jersey3
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>
- Jakarta EE 8/Jersey 2 -
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>