jcloud: следует ли сохранять экземпляры BlobStoreContext?

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


person sbrattla    schedule 24.09.2013    source источник


Ответы (1)


Поскольку у вас есть код, вы будете проходить повторную аутентификацию при каждом вызове функции «выгрузка». Вместо этого вы, вероятно, захотите создать глобальную переменную контекста, вызвать функцию аутентификации для установки ваших учетных данных, а затем использовать контекст в своей функции загрузки.

См. Этот пример:

https://github.com/jclouds/jclouds-examples/blob/master/rackspace/src/main/java/org/jclouds/examples/rackspace/Authentication.java

person JRP    schedule 24.09.2013