【问题标题】:rackspace cloudfiles throws ContainerNotFoundException after migration from jclouds 1.5 to 1.7从 jclouds 1.5 迁移到 1.7 后 rackspace cloudfiles 抛出 ContainerNotFoundException
【发布时间】:2014-03-04 15:44:24
【问题描述】:

我正在尝试将我们使用的 jclouds 库从 1.5 版更新到 1.7 版。

我们通过以下方式访问 api: https://github.com/jclouds/jclouds-examples/tree/master/rackspace/src/main/java/org/jclouds/examples/rackspace/cloudfiles

private RestContext<CommonSwiftClient, CommonSwiftAsyncClient> swift;
BlobStoreContext context = ContextBuilder.newBuilder(PROVIDER)
.credentials(username, apiKey)
.buildView(BlobStoreContext.class);

swift = context.unwrap();

RestContext 自 1.6 起已弃用。 http://demobox.github.io/jclouds-maven-site-1.6.0/1.6.0/jclouds-multi/apidocs/org/jclouds/rest/RestContext.html

我试图让它这样工作:

ContextBuilder contextBuilder = ContextBuilder.newBuilder(rackspaceProvider)
.credentials(rackspaceUsername, rackspaceApiKey);
rackspaceApi = contextBuilder.buildApi(CloudFilesClient.class);

在运行时,上传文件我收到以下错误:

org.jclouds.blobstore.ContainerNotFoundException

jclouds github 项目中的示例似乎使用了已弃用的方法(上面提到的链接)。

任何想法如何解决这个问题?有其他选择吗?

【问题讨论】:

    标签: java rackspace cloudfiles jclouds


    【解决方案1】:

    您要上传到的容器是否存在? putObject 方法不会自动创建您命名的容器(如果它不存在);您需要首先显式调用createContainer 来创建它。

    这是一个创建容器并将文件上传到其中的示例:

    CloudFilesClient client = ContextBuilder.newBuilder("cloudfiles-us")
        .credentials(USERNAME, APIKEY)
        .buildApi(CloudFilesClient.class);
    
    client.createContainer("sample");
    
    SwiftObject object = client.newSwiftObject();
    object.getInfo().setName("somefile.txt");
    object.setPayload("file or bytearray or something else here");
    client.putObject("sample", object);
    
    // ...
    
    client.close();
    

    jclouds-examples 中的示例仍然引用 RestClient 是对的,但您应该能够通过将 rackspaceApi 对象替换为他们调用 swift.getApi() 的位置来转换为新样式。

    【讨论】:

    • 非常感谢!容器存在 - 我忘了提。当我创建一个新容器时,它运行良好。如果我尝试访问现有容器,我仍然会收到 ContainerNotFoundException。
    猜你喜欢
    • 2015-01-01
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    • 2018-09-18
    • 2013-07-18
    • 1970-01-01
    • 2013-02-21
    • 1970-01-01
    相关资源
    最近更新 更多