我使用了来自JClouds(http://www.jclouds.org/documentation/quickstart/rackspace/)的Rackspace示例代码,如果我使用我的Rackspace美国帐户。一切正常。
但是,如果我使用Rackspace UK帐户并想要创建/启动服务器(访问数据和API正确),它将无法正常工作。 Rackspace US中的相同Code可以正常工作。
我不知道为什么?标头有效,我可以获取所有图像,服务器,也可以删除服务器。但是启动一个新服务器是不可能的……JClouds重试5次以创建/启动一个没有成功的服务器,然后我得到了这个Stacktrace;
java.util.concurrent.ExecutionException: task submitted from the following trace
at org.jclouds.concurrent.config.ExecutorServiceModule$DescribedFuture.ensureCauseHasSubmissionTrace(ExecutorServiceModule.java:272) ~[jclouds-core-1.4.2.jar:1.4.2]
at org.jclouds.concurrent.config.ExecutorServiceModule$DescribedFuture.get(ExecutorServiceModule.java:256) ~[jclouds-core-1.4.2.jar:1.4.2]
at com.google.common.util.concurrent.ForwardingFuture.get(ForwardingFuture.java:69) ~[guava-11.0.2.jar:na]
at com.google.common.util.concurrent.Futures$ChainingListenableFuture.get(Futures.java:661) ~[guava-11.0.2.jar:na]
at org.jclouds.concurrent.ExceptionParsingListenableFuture.get(ExceptionParsingListenableFuture.java:76) ~[jclouds-core-1.4.2.jar:1.4.2]
at org.jclouds.concurrent.internal.SyncProxy.invoke(SyncProxy.java:137) ~[jclouds-core-1.4.2.jar:1.4.2]
at $Proxy133.createServer(Unknown Source) ~[na:na]
at com.myproject.rackspace.RackspaceHandler.startServer(RackspaceHandler.java:43) ~[com.myproject.rackspace-2.0-SNAPSHOT.jar:na]
at com.myproject.project.RackspaceFuture.get(RackspaceFuture.java:78) ~[RackspaceFuture.class:na]
at com.myproject.project.Starter.startTransfer(Starter.java:63) ~[Starter.class:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_03]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_03]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_03]
at java.lang.reflect.Method.invoke(Method.java:601) ~[na:1.7.0_03]
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:64) ~[spring-context-3.1.1.RELEASE.jar:3.1.1.RELEASE]
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:53) ~[spring-context-3.1.1.RELEASE.jar:3.1.1.RELEASE]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_03]
at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:351) [na:1.7.0_03]
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:178) [na:1.7.0_03]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178) [na:1.7.0_03]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [na:1.7.0_03]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [na:1.7.0_03]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [na:1.7.0_03]
at java.lang.Thread.run(Thread.java:722) [na:1.7.0_03]
15:56:51.174 [i/o thread 0] WARN o.j.h.h.BackoffLimitedRetryHandler - Cannot retry after server error, command has exceeded retry limit 5: [method=CloudServersAsyncClient.createServer, request=POST https://lon.servers.api.rackspacecloud.com/v1.0/XXXXXXXXXX/servers?format=json HTTP/1.1]
编辑2012年8月21日
今天,我也尝试了jclouds 1.5.0-beta.10版本,它不起作用。我有以下代码
final ComputeServiceContext context = new ComputeServiceContextFactory().createContext("cloudservers-uk", "user", "API", ImmutableSet.of(new SshjSshClientModule(), new SLF4JLoggingModule()));
getClient(context).createServer("SERVER_NAME", IMAGE_ID, FLAVOUR_ID);
context.close();
private CloudServersClient getClient(final ComputeServiceContext context)
{
return CloudServersClient.class.cast(context.getProviderSpecificContext().getApi());
}
和以下依赖项
<dependency>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-compute</artifactId>
<version>1.5.0-beta.10</version>
</dependency>
<dependency>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-allcompute</artifactId>
<version>1.5.0-beta.10</version>
</dependency>
<dependency>
<groupId>org.jclouds.provider</groupId>
<artifactId>rackspace-cloudservers-uk</artifactId>
<version>1.5.0-beta.10</version>
</dependency>
问题出在哪里?
谢谢你的帮助
雷内
最佳答案
为您的提供商尝试“ rackspace-cloudservers-uk”。以这种方式创建服务器后,您可以在Web界面中从https://mycloud.rackspace.co.uk看到它
如果仍然遇到问题,则可能需要查看我的博客文章以开始使用jclouds(和Rackspace)。
http://blog.phymata.com/2012/08/15/getting-started-with-jclouds/
关于java - JClouds RackspaceUK不会启动服务器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11608153/