2013-09-24 2 views
2

У меня есть следующий метод, который позволяет мне загружать файлы в контейнерах на Rackspace CloudFiles:jcloud: Должен ли я хранить экземпляры BlobStoreContext?

/** 
* 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); 
    } 
} 

Прямо сейчас, я creataing новый контекст каждый раз, когда метод вызывается. Насколько я понимаю, код будет только аутентифицироваться при первом вызове и оттуда использовать ключ, выданный во время первой аутентификации при всех последующих вызовах. Однако, я не уверен, что это правильно? Будет ли я повторно аутентифицироваться, если я выброшу экземпляр BlobStoreContext и создаст новый экземпляр при каждом вызове upload()? Было бы лучше сохранить экземпляр BlobStoreContext?

ответ

1

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

Смотрите этот пример:

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

Смежные вопросы