У меня есть следующий метод, который позволяет мне загружать файлы в контейнеры в 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?