Rackspace CloudFiles のコンテナーにファイルをアップロードできる次の方法があります。
/**
* Uploads a file to the storage.
*
* @param f the <code>File</code> which is to be uploaded to the storage.
* @param fileContainer a <code>String</code> representing the container
* which the provided <code>File</code> is to be uploaded to.
* @throws StorageException if an attempt to upload the provided file to
* the storage failed.
*/
public static void upload(File file, String fileContainer) throws StorageException {
if (!file.exists()) {
throw new StorageException("The file '" + file.getName() + "' does not exist.");
}
try {
BlobStoreContext cb = ContextBuilder.newBuilder("cloudfiles-uk")
.credentials(USERNAME, PASSWORD)
.buildView(BlobStoreContext.class);
Blob blob = cb.getBlobStore().blobBuilder(file.getName())
.payload(file)
.build();
cb.getBlobStore().putBlob(fileContainer, blob);
} catch (Exception e) {
throw new StorageException(e);
}
}
現在、メソッドが呼び出されるたびに新しいコンテキストを作成しています。私が理解している限り、コードは最初の呼び出しでのみ認証され、そこからすべての後続の呼び出しで最初の認証中に発行されたキーが使用されます。しかし、それが正しいかどうかはわかりませんか?BlobStoreContext インスタンスを破棄し、upload() が呼び出されるたびに新しいインスタンスを作成すると、再認証されますか? BlobStoreContext インスタンスを保持する方が良いでしょうか?