Oracle Cloud Infrastructureドキュメント

構成

このトピックでは、Java用のOracle Cloud Infrastructure SDKの互換性、拡張構成およびアドオンの詳細を説明します。

セキュリティ・マネージャ権限

アプリケーションを「Javaセキュリティ・マネージャ」内で実行する必要がある場合は、ポリシー・ファイルを更新するか、実行時に追加または別のポリシー・ファイルを指定して、追加のアクセス権を付与する必要があります。

SDKには次の権限が必要です:

  • ジャージの必要性:

    
    permission java.lang.RuntimePermission "getClassLoader";
    permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
    permission java.lang.RuntimePermission "accessDeclaredMembers";
    permission java.util.PropertyPermission "*", "read,write";
    permission java.lang.RuntimePermission "setFactory";
  • 予約済みヘッダーを上書きするためにSDKによって必要とされる:

    permission java.util.PropertyPermission "sun.net.http.allowRestrictedHeaders", "write";
  • ソケット接続を開くためにSDKが必要とするもの:

    permission java.net.SocketPermission "*", "connect";

別のポリシー・ファイルを含めるには、Java Runtime Environmentのデフォルト・ポリシー・ファイルに加えて、Java仮想マシンを次のように起動します:

java -Djava.security.manager -Djava.security.policy=</path/to/other_policy>

デフォルトのポリシー・ファイルを置き換えるには、次のようにJava仮想マシンを起動します:

java -Djava.security.manager -Djava.security.policy==</path/to/other_policy>

ノート

ポリシー・ファイルを追加する場合は、等号(=)を1つ使用してください。
デフォルトのポリシー・ファイルを置き換える場合にのみ、二重等号(==)を使用してください。

DNS Name参照のJava仮想マシンTTL

Java仮想マシン(JVM)は、time-to-live (TTL)と呼ばれる一定時間、ルックアップからのDNSレスポンスをキャッシュします。 これにより、頻繁な名前解決が必要なコードでのレスポンス時間が短縮されます。

JVMは、networkaddress.cache.ttlプロパティを使用して、DNS名前ルックアップのキャッシング・ポリシーを指定します。 値は、成功したルックアップをキャッシュする秒数を表す整数です。 多くのJVMのデフォルト値-1は、ルックアップを永続的にキャッシュする必要があることを示します。

Oracle Cloud Infrastructureのリソースは変更可能なDNS名を使用するため、TTL値を60秒に変更することをお勧めします。 これにより、リソースの新しいIPアドレスが次のDNS問合せで返されます。 アプリケーションに対してこの値をグローバルに、または具体的に変更することができます:

  • JVMを使用するすべてのアプリケーションでTTLをグローバルに設定するには、$JAVA_HOME/jre/lib/security/java.securityファイルに次の行を追加します:

    networkaddress.cache.ttl=60
  • アプリケーションでのみTTLを設定するには、アプリケーションの初期化コードで次のように設定します:

    java.security.Security.setProperty("networkaddress.cache.ttl" , "60");

Apache Connectorアドオン

oci-java-sdk-addons-apacheは、クライアント接続プールおよびHTTPプロキシの構成を可能にする、Java用のSDKに対するオプションのアドオンです。 アドオンは、サービス・コールを行うときに、SDKのデフォルトのHttpUrlConnectorProviderの代わりにJerseyのApacheConnectorProviderを利用します。 アドオンは、SDKのbmc-addonsディレクトリで見つけることができます。

インストールおよび構成の詳細は、Readmeでアドオンを参照してください。

独自のJAX-RS実装の使用

JavaのSDKはジャージでバンドルされていますが、自分のJAX-RS実装を使用することもできます。 独自の実装の構成例については、RESTEasy Client Configurator Add-Onおよび付随するコード・サンプルを参照してください。

RESTEasy Client Configurator Add-On

oci-java-sdk-addons-resteasy-client-configuratorは、代替JAX-RS実装の構成方法を示すために提供されています。 アドオンは、SDKのbmc-addonsディレクトリで見つけることができます。

インストールおよび構成の詳細は、Readmeでアドオンを参照してください。

クライアントの構成方法を説明するコード・サンプルについては、次を参照してください:

SLF4Jを使用したロギング

SDKのログインはSLF4Jを使って行います。 SLF4Jは、ユーザー提供のロギング・ライブラリ(log4jなど)の使用を可能にするロギング抽象化です。 詳細は、「SLF4Jマニュアル」を参照してください。

以下は標準的なログ出力を可能にする例です。 より高度なロギング・オプションは、log4jバインディングを使用して構成できます。

  1. SLF4J Simpleバインディング・ジャーをダウンロード: SLF4J単純バインディング
  2. jarをクラスパスに追加します(たとえば、SDKのダウンロードの/third-party/libディレクトリに追加します)
  3. 次のVM引数を追加して、デバッグ・レベルのロギングを有効にします(デフォルトでは、infoレベルが使用されます): -Dorg.slf4j.simpleLogger.defaultLogLevel=debug