0

put 操作で jClouds AzureBlob API の問題に直面しています

context = new BlobStoreContextFactory().createContext(
                    this.storageType,
                    this.storageAccount, 
                    this.primaryAccessKey);

    BlobStore blobStore = context.getBlobStore();
                Blob blob = blobStore.blobBuilder(fileName).payload(content).build(); //$NON-NLS-1$
                blobStore.putBlob(this.containerName, blob);

アクセス キーの管理 -> ストレージ アカウントのプライマリ アクセス キーからプライマリ アクセス キーを設定しています。

次のエラーが表示されます

org.jclouds.http.HttpResponseException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty connecting to PUT https://mypackages.blob.core.windows.net/mycontainer/ERROR/error_20130717022518962.xml HTTP/1.1
    at org.jclouds.http.internal.BaseHttpCommandExecutorService$HttpResponseCallable.call(BaseHttpCommandExecutorService.java:173)
    at org.jclouds.http.internal.BaseHttpCommandExecutorService$HttpResponseCallable.call(BaseHttpCommandExecutorService.java:130)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)[:1.6.0_43]
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)[:1.6.0_43]
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)[:1.6.0_43]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)[:1.6.0_43]
    at java.lang.Thread.run(Thread.java:662)[:1.6.0_43]
    at org.jclouds.concurrent.config.ExecutorServiceModule$DescribingExecutorService.submit(ExecutorServiceModule.java:184)
    at org.jclouds.http.internal.BaseHttpCommandExecutorService.submit(BaseHttpCommandExecutorService.java:127)
    at org.jclouds.http.TransformingHttpCommandExecutorServiceImpl.submit(TransformingHttpCommandExecutorServiceImpl.java:54)
    at org.jclouds.http.TransformingHttpCommandImpl.execute(TransformingHttpCommandImpl.java:73)
    at org.jclouds.rest.internal.AsyncRestClientProxy.createListenableFutureForHttpRequestMappedToMethodAndArgs(AsyncRestClientProxy.java:198)
    at org.jclouds.rest.internal.AsyncRestClientProxy.invoke(AsyncRestClientProxy.java:134)
    at com.sun.proxy.$Proxy295.putBlob(Unknown Source)
    at sun.reflect.GeneratedMethodAccessor107.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)[:1.6.0_43]
    at java.lang.reflect.Method.invoke(Method.java:597)[:1.6.0_43]
    at org.jclouds.concurrent.internal.SyncProxy.invoke(SyncProxy.java:137)
    at com.sun.proxy.$Proxy296.putBlob(Unknown Source)
    at org.jclouds.azureblob.blobstore.AzureBlobStore.putBlob(AzureBlobStore.java:194)
    at sun.reflect.GeneratedMethodAccessor105.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)[:1.6.0_43]
    at java.lang.reflect.Method.invoke(Method.java:597)[:1.6.0_43]
    at com.google.inject.internal.DelegatingInvocationHandler.invoke(DelegatingInvocationHandler.java:37)
    at com.sun.proxy.$Proxy287.putBlob(Unknown Source)

上記のスタック トレースの "ERROR/error_201307170222518962.xml" は、ブロブ ストレージに配置しようとしているファイルです。

これを解決する方法はありますか?

4

1 に答える 1

0

この問題は解決されました。実際には、Azure BLOB ストレージの ReST PUT を呼び出すコードです。どういうわけか Java のデフォルトの信頼ストアをロードできませんでした。

以下の行を追加して、デフォルトの cacert をロードします

System.setProperty("javax.net.ssl.trustStore",PATH_TO_CACERT);
System.setProperty("javax.net.ssl.trustStorePassword",PASSWORD);
于 2013-09-22T18:31:47.433 に答える