1

これが私のコードの例です:

    プロパティ props = new Properties();
    props.setProperty(KeystoneProperties.CREDENTIAL_TYPE, CredentialTypes.API_ACCESS_KEY_CREDENTIALS);
    context = ContextBuilder.newBuilder("hpcloud-objectstorage")
        .overrides(小道具)
        .credentials(api_key, api_secret)
        .buildView(BlobStoreContext.class);
    ストア = context.getBlobStore();

    //これは機能します
    ブロブ blob1 = store.blobBuilder("file1")
        。ペイロード("")
        。建てる();

    String blobName1 = store.putBlob(remoteFolderName, blob1);

    // これはメッセージとともにクラッシュします。以下で確認できます
    ブロブ blob2 = store.blobBuilder("file2")
        .payload("a")
        。建てる();

    String blobName1 = store.putBlob(remoteFolderName, blob2);

このコードを実行した後に表示される例外メッセージは次のとおりです。

    2012 年 11 月 7 日 7:08:44 PM org.jclouds.logging.jdk.JDKLogger logError
    Schwerwiegend: サーバー エラーの後で再試行できません。コマンドが再試行制限 5 を超えました: [method=HPCloudObjectStorageAsyncApi.putObject, request=PUT https://region-a.geo-1.objects.hpcloudsvc.com/v1/82797321453196/cloudstoretest/file2 HTTP/1.1]

ここにスタックトレースがあります:

    org.jclouds.http.HttpResponseException: PUT に接続しているサーバーから予期しないファイルの終わり https://region-a.geo-1.objects.hpcloudsvc.com/v1/82797321453196/cloudstoretest/tada%21 HTTP/1.1
    org.jclouds.http.internal.BaseHttpCommandExecutorService$HttpResponseCallable.call(BaseHttpCommandExecutorService.java:179) で
    org.jclouds.http.internal.BaseHttpCommandExecutorService$HttpResponseCallable.call(BaseHttpCommandExecutorService.java:135) で
    ...

何が問題なのか、私には手がかりがありません。可能な解決策を2日間探していますが、結果はありません。誰かが私が間違っていることを考えているなら、私はとても幸せです...

4

1 に答える 1

0

あなたのブロブの名前は文字通り「tada!」のようです。「tada%21」でエンコードされた URL に基づく

openstack の迅速な実装が、末尾に「!」を含む名前の BLOB をサポートしていない可能性は十分にあります。他の命名規則を試して、同じエラーが発生するかどうかを確認できますか?

于 2012-11-17T18:42:31.807 に答える