OCI SDK for Javaのバージョン3の更新

このトピックでは、Oracle Cloud Infrastructure SDK for Javaのバージョン3で導入された主要な変更の一部について説明します。

このトピックでは、Oracle Cloud Infrastructure SDK for Javaのバージョン3で導入された主要な変更の一部について説明します。

ノート

詳細はリリース・ノートを参照し、追加情報はのトピックを参照してください。

HTTPクライアント・ライブラリ

HTTPクライアント・ライブラリは、デフォルトでは構成されていません。HTTPクライアント・ライブラリを明示的に選択する必要があります。OCI SDK for Javaでは、HTTPクライアント・ライブラリに対して次の選択肢があります:

oci-java-sdk-common-httpclient-jerseyまたはoci-java-sdk-common-httpclient-jersey3に対する依存関係を宣言して、HTTPクライアント・ライブラリを指定します。例:

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

呼出しコールバック

com.oracle.bmc.util.internal.Consumer<Invocation.Builder>を使用して呼出しコールバックを登録するかわりに、com.oracle.bmc.http.client.RequestInterceptorを使用します。これにより、実装がHTTPクライアントの選択から分離されます。

簡易クライアント構成

com.oracle.bmc.http.ClientConfiguratorcustomizeClient(HttpClientBuilder builder)メソッドによって、customizeBuildercustomizeClientおよびcustomizeRequestメソッドは置き換えられました。例:

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

設定できるプロパティは、使用しているHTTPクライアントによって異なります。独自のプロパティを定義することもできます。事前定義済の設定可能なプロパティの包括的なリストは、次を参照してください:

クライアント構成の例
構成
リクエストをバッファするかどうかの設定
builder.property(
                StandardClientProperties.BUFFER_REQUEST, shouldBuffer);
Apache接続マネージャの設定
builder.property(
                ApacheClientProperties.CONNECTION_MANAGER,
                connectionManager);
トラスト・ストアの設定
// Server CA goes into the trust store
        KeyStore trustStore =
                keystoreGenerator.createTrustStoreWithServerCa(tlsConfig.getCaBundle());
        builder.property(StandardClientProperties.TRUST_STORE, trustStore);
キー・ストアの設定
builder.property(
                StandardClientProperties.KEY_STORE,
                new KeyStoreWithPassword(keyStore, keystorePassword));
SSLコンテキストの設定
builder.property(
                StandardClientProperties.SSL_CONTEXT, sslContext);
プロキシの設定
builder.property(
                StandardClientProperties.PROXY, proxyConfig);
ホスト名検証の設定
builder.property(
                StandardClientProperties.HOSTNAME_VERIFIER,
                NoopHostnameVerifier.INSTANCE);

次のクライアント構成例も使用できます:

Apacheコネクタの変更

Apacheコネクタの実装をHTTPクライアントの選択から分離するために、いくつかの変更が行われました。

com.oracle.bmc.http.ApacheConfiguratorは、com.oracle.bmc.http.client.jersey.ApacheClientPropertiesまたはcom.oracle.bmc.http.client.jersey3.ApacheClientProperties (Jersey 3の場合)によって置き換えられました。

次の例は、リクエストをメモリーにバッファしないクライアント用です:

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

要求をメモリーにバッファする必要があるクライアントの場合は、次の例を参照してください:

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

詳細は、DisableNoConnectionReuseStrategyUsingApacheConfiguratorExample.javaおよびDisableNoConnectionReuseStrategyUsingApacheConfiguratorExample.java (Jersey 3)を参照してください。

oci-java-sdk-addons-apache-configurator-jerseyアドオン・モジュールのcom.oracle.bmc.http.client.jersey.apacheconfigurator.ApacheConfiguratorまたはoci-java-sdk-addons-apache-configurator-jersey3アドオン・モジュールのcom.oracle.bmc.http.client.jersey3.apacheconfigurator.ApacheConfiguratorを使用することも検討してください。

詳細は、DisableNoConnectionReuseStrategyUsingApacheConfiguratorExample.javaおよびDisableNoConnectionReuseStrategyUsingApacheConfiguratorExample.java (Jersey 3)を参照してください。

サーキット・ブレーカの変更

サーキット・ブレーカ・インタフェースの名前がcom.oracle.bmc.circuitbreaker.JaxRsCircuitBreakerからcom.oracle.bmc.circuitbreaker.OciCircuitBreakerに変更されました。

com.oracle.bmc.circuitbreaker.CircuitBreakerConfigurationのコンストラクタを使用するかわりに、ビルダーを使用します。コンストラクタはパブリックではなくなりました。

com.oracle.bmc.util.CircuitBreakerUtilsクラスは、com.oracle.bmc.circuitbreaker.CircuitBreakerConfigurationのみでサーキット・ブレーカを処理しなくなりました。そのため、DEFAULT_CIRCUIT_BREAKERフィールドとgetUserDefinedCircuitBreakerメソッドは削除されました。必要に応じて、com.oracle.bmc.circuitbreaker.CircuitBreakerFactoryのビルド・メソッドを使用して、デフォルト構成から新しいサーキット・ブレーカを構築します。