最終更新日:2025-08-18 15:54:12
本ドキュメントは、Object Storage Service 用 Java SDK v2 の導入と主要機能の利用方法について、詳細なガイドを提供します。
ご利用のシステムにJavaがインストールされていることを確認してください。Java 1.7以降のバージョンを推奨します。バージョンは java -version で確認できます。
Java SDK Rest v2 には、以下のような各種サンプルプログラムが用意されています。
| サンプルファイル | 説明 |
|---|---|
| DownloadSample | 基本的なファイルダウンロード |
| SimpleMultipartUploadSample | マルチパートアップロード |
| ListObjectsSample | オブジェクト一覧取得 |
| ObjectOperationsSample | オブジェクト管理 |
| DeleteObjectsSample | オブジェクト一括削除 |
| BucketLifecycleSample | バケットライフサイクル管理 |
| ConcurrentCopyPartSample | マルチスレッドによるマルチパートコピー |
| ConcurrentDownloadObjectSample | マルチスレッドによるマルチパートダウンロード |
| ConcurrentUploadPartSample | マルチスレッドによるマルチパートアップロード |
| CreateFolderSample | 「フォルダー」作成 |
| DeleteObjectsSample | オブジェクトの一括削除 |
| ListBucketsSample | バケットの一覧取得 |
| ListObjectsV2Sample | オブジェクト一覧取得(v2) |
| ObjectMetaSample | オブジェクトメタデータの設定 |
| PostObjectSample | フォームアップロード |
| RestoreObjectSample | オブジェクトの復元(アンフリーズ) |
各種操作を行う前に、Java SDK をインストールしてください。SDKは GitHub からダウンロードできます。
Mavenプロジェクトへの依存関係追加
<dependency>
<groupId>com.chinanetcenter.wcs.sdk</groupId>
<artifactId>wcs-java-sdk-v2</artifactId>
<version>1.0.3</version>
</dependency>
IntelliJ IDEAでJAR導入例
バージョン 1.0.0 の場合:
wcs-java-sdk-rest-v2-1.0.0.jar と lib ディレクトリ内の全JARファイルをプロジェクトにコピーFile -> Project Structure -> Modules -> Dependencies -> + -> JARs or directories を選択WosClient は、Java SDKでバケットやオブジェクトを管理するためのクライアントです。ご利用の前に、WosConfiguration を初期化し、必要に応じてデフォルト設定値を調整してください。
// コンソール:ユーザーセンター > ユーザー情報 > AccessKey管理 から Access Key(ak)および Secret Key(sk)を取得
// コンソール:オブジェクトストレージ > バケット概要 から endpoint と regionName を取得
String endPoint = "https://your-endpoint";
String regionName = "your regionName";
String ak = "*** Provide your Access Key ***";
String sk = "*** Provide your Secret Key ***";
WosConfiguration config = new WosConfiguration();
config.setSocketTimeout(30000);
config.setConnectionTimeout(10000);
config.setEndPoint(endPoint);
config.setRegionName(regionName);
// WosClientインスタンス作成
WosClient wosClient = new WosClient(ak, sk, config);
// WosClientを閉じる
wosClient.close();
// WosClientインスタンス作成
WosClient wosClient = new WosClient(ak, sk, config, regionName);
// WosClientを閉じる
wosClient.close();
注意: 新しいWosClientを作成する場合、Endpointを指定する必要があります。1つのプロジェクト内で1つ以上のWosClientインスタンスを持つことができます。WosClientはスレッドセーフで、並行利用をサポートします。
WosClientは、WosConfiguration により各種パラメータ(タイムアウト値、最大接続数等)の設定が可能です。主な設定項目は下記の通りです。
| 設定項目 | 説明 | メソッド |
|---|---|---|
| connectionTimeout | HTTP/HTTPS接続タイムアウト(ミリ秒)。デフォルト: 60000 | WosConfiguration.setConnectionTimeout |
| socketTimeout | ソケットタイムアウト(ミリ秒)。デフォルト: 60000 | WosConfiguration.setSocketTimeout |
| idleConnectionTime | アイドル接続のクローズまでの時間。超過すると切断(ミリ秒)。デフォルト: 30000 | WosConfiguration.setIdleConnectionTime |
| maxIdleConnections | コネクションプールの最大アイドル接続数。デフォルト: 1000 | WosConfiguration.setMaxIdleConnections |
| maxConnections | 同時実行可能なHTTPリクエストの最大数。デフォルト: 1000 | WosConfiguration.setMaxConnections |
| maxErrorRetry | 失敗時のリトライ回数。デフォルト: 3 | WosConfiguration.setMaxErrorRetry |
| endPoint | オブジェクトストレージサービスのアドレス(プロトコル・ドメイン・ポート)。例: “https://your-endpoint:443” | WosConfiguration.setEndPoint |
| readBufferSize | ソケットストリーム読み込みバッファ(バイト)。デフォルト: -1(無効化) | WosConfiguration.setReadBufferSize |
| writeBufferSize | ソケットストリーム書き込みバッファ(バイト)。デフォルト: -1(無効化) | WosConfiguration.setWriteBufferSize |
| pathStyle | falseの場合bucketName.endpoint形式、trueでendpoint/bucketName形式ドメインを利用 |
WosConfiguration.setPathStyle |
Java SDKは以下のような基本操作に対応しています。
以下のコードは、オブジェクトをアップロードする例です。
wosClient.putObject("bucketname", "objectname", new ByteArrayInputStream("Hello WOS".getBytes()));
次のようにして、オブジェクトの内容を取得できます。
WosObject wosObject = wosClient.getObject("bucketname", "objectname");
InputStream content = wosObject.getObjectContent();
if (content != null) {
BufferedReader reader = new BufferedReader(new InputStreamReader(content));
while (true) {
String line = reader.readLine();
if (line == null)
break;
System.out.println("\n" + line);
}
reader.close();
}
注意:
wosObject.getObjectメソッドは、コンテンツおよびメタデータを含むWosObjectインスタンスを返します。wosObject.getObjectContentでInputStream(内容)を取得できます。ストリームは使用後必ずクローズしてください。オブジェクトを複数アップロードした後、バケット内の内容リストが必要になることがあります。例:
ObjectListing objectListing = wosClient.listObjects("bucketname");
for (WosObject wosObject : objectListing.getObjects()) {
System.out.println(" - " + wosObject.getObjectKey() + " " + "(size = " + wosObject.getMetadata().getContentLength() + ")");
}
注意:
wosClient.listObjectsはObjectListingインスタンスを返し、ObjectListing.getObjects経由で詳細を取得できます。特定のオブジェクトの削除方法は以下の通りです。
wosClient.deleteObject("bucketname", "objectname");
署名付きURLを生成してアクセスする例です。
TemporarySignatureRequest req = new TemporarySignatureRequest(HttpMethodEnum.GET, 300);
req.setBucketName(bucketName);
req.setObjectKey(objectKey);
TemporarySignatureResponse res = wosClient.createTemporarySignature(req);
System.out.println("一時署名URLを利用してオブジェクト取得:");
System.out.println("\t" + res.getSignedUrl());
WOSクライアント経由でAPIを呼び出した後、例外がスローされなければ戻り値(SDK基本レスポンスまたはそのサブクラス)は有効です。例外発生時は、SDKカスタム例外オブジェクトからエラー情報を取得してください。
標準的な利用パターンは下記となります。
// プロジェクト全体で単一のグローバルWosClientインスタンスを維持することも可能です。
// WosClientはスレッドセーフで並列利用をサポートします。
WosClient wosClient = null;
try {
String endPoint = "https://your-endpoint";
String regionName = "your regionName";
String ak = "*** Provide your Access Key ***";
String sk = "*** Provide your Secret Key ***";
// 設定の作成
WosConfiguration config = new WosConfiguration();
config.setSocketTimeout(30000);
config.setConnectionTimeout(10000);
config.setEndPoint(endPoint);
config.setRegionName(regionName);
// WosClientインスタンス作成
wosClient = new WosClient(ak, sk, config);
// 例:オブジェクトアップロード
HeaderResponse response = wosClient.putObject("bucketname", "objectname", new File("localfile")); // 'localfile'はアップロードするファイルのパス。フルファイル名を指定してください。
System.out.println(response);
} catch (WosException e) {
System.out.println("HTTP Code: " + e.getResponseCode());
System.out.println("Error Code: " + e.getErrorCode());
System.out.println("Error Message: " + e.getErrorMessage());
System.out.println("Request ID: " + e.getErrorRequestId());
System.out.println("Host ID: " + e.getErrorHostId());
} finally {
// WosClientインスタンスを閉じます。グローバルWosClient利用時は都度クローズ不要です。
// wosClient.close() 呼び出し後は、再利用不可となりますのでご注意ください。
if (wosClient != null) {
try {
// wosClient.close();
} catch (IOException e) {
// 必要に応じて例外処理を実装
}
}
}