我需要更新所有AmazonS3的云文件中的缓存控制头.但是,我无法弄清楚如何使用jclouds API.我正在使用apache jclouds插件.我得到了两个相关的答案:
第一个答案是建议使用SwiftKey Api类,这在grails的jcloud插件中是不可用的.第二个答案是使用AWS java sdk已经有一个grails包装插件https://grails.org/plugin/aws-sdk但它不支持元数据更新.
我正在尝试使用Hibernate Search来使用在Amazon S3上托管的Lucene索引,但是我得到以下异常:
Exception in thread "LuceneIndexesData-CloudCacheStore-0" java.lang.IllegalArgumentException: bucketId: A96137216.bz2 (expected: integer)
at org.infinispan.loaders.bucket.Bucket.setBucketId(Bucket.java:84)
at org.infinispan.loaders.cloud.CloudCacheStore.readFromBlob(CloudCacheStore.java:450)
at org.infinispan.loaders.cloud.CloudCacheStore.scanBlobForExpiredEntries(CloudCacheStore.java:292)
at org.infinispan.loaders.cloud.CloudCacheStore.purge(CloudCacheStore.java:284)
at org.infinispan.loaders.cloud.CloudCacheStore.purgeInternal(CloudCacheStore.java:336)
at org.infinispan.loaders.AbstractCacheStore$2.run(AbstractCacheStore.java:111)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
在s3中持久化lucene索引的文档有点稀疏但我认为我在正确的轨道上.我正在尝试在我的应用程序中嵌入infinispan,所以我在hibernate.cfg.xml中指定了infinispan XML的路径如下所示
<property name="hibernate.search.default.directory_provider">infinispan</property>
<property name="hibernate.search.infinispan.configuration_resourcename">infinispan-amazons3.xml</property>
<property name="hibernate.search.infinispan.chunk_size">300000000</property>
Run Code Online (Sandbox Code Playgroud)
而我的infinispan-amazons3.xml是:
<infinispan>
<default>
<loaders>
<cloudStore xmlns="urn:infinispan:config:cloud:5.3"
cloudService="aws-s3"
identity="user"
password="password"
bucketPrefix="bucket">
</cloudStore>
</loaders>
</default>
</infinispan>
Run Code Online (Sandbox Code Playgroud)
我正在使用以下版本(maven pom.xml)
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-search</artifactId>
<version>4.4.4.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-search-infinispan</artifactId>
<version>4.4.4.Final</version>
</dependency>
<dependency>
<groupId>org.infinispan</groupId>
<artifactId>infinispan-cachestore-cloud</artifactId>
<version>5.3.0.Final</version>
</dependency>
<dependency>
<groupId>org.jclouds.provider</groupId>
<artifactId>aws-s3</artifactId>
<version>1.4.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
任何有关使用hibernate-search和Amazon S3的帮助都表示赞赏.
提前致谢.
因此,我试图最终了解基于云的企业应用程序如何工作,以及他们的架构通常是什么样子.假设我使用像亚马逊这样的云提供商.我假设(请纠正我,如果我错了),我将支付1+个虚拟机,根据我的应用程序需要容纳一堆软件.
我对jclouds或Terracotta这样的框架如何融入图片感到困惑.jclouds将自己宣传为" 一个可以帮助您开始使用云的开源库 ",并列出了许多巨大的功能,如果没有有意义的示例,对我来说并不重要.Terracotta自称是一个高规模的集群框架.为什么我需要使用像jclouds这样的东西?我将使用哪些具体的具体方案?
再说一遍,如果我使用亚马逊作为我的云提供商,他们不会已经高度扩展吗?为什么我需要云中的兵马俑?
我使用jclouds作为Rackspace Cloud Files的api.
Api允许我使用BlobStore.createContainerInLocation在不同位置创建容器
现在,拥有已经存在的容器,我该如何获取它的位置?
我有一些用于连接到 JClouds swift 存储容器的代码,该容器在自己的测试区域中运行良好,但是一旦集成到我的项目中,我就会收到错误:
线程“main”中的异常 java.util.ServiceConfigurationError:org.jclouds.apis.ApiMetadata:Provider org.jclouds.openstack.keystone.v2_0.KeystoneApiMetadata 无法实例化:java.lang.IllegalStateException:java.lang.reflect.InitationTargetException
这是在 ContextBuilder 行上失败的代码:
private SwiftApi swiftApi;
public JCloudsConnector(String username, String password, String endpoint) {
String provider = "openstack-swift";
Properties overrides = new Properties();
overrides.setProperty("jclouds.mpu.parallel.degree", "" + Runtime.getRuntime().availableProcessors());
swiftApi = ContextBuilder.newBuilder(provider)
.endpoint(endpoint)
.credentials(username, password)
.overrides(overrides)
.buildApi(SwiftApi.class);
}
Run Code Online (Sandbox Code Playgroud)
我使用相同的依赖项(JClouds 版本 1.7.3),因此我无法理解问题可能是什么,因为两者都在同一环境中运行。
我正在尝试将Apache Jclouds集成到我正在处理的Spring Boot应用程序中,以便我可以将文件上传到Rackspace Cloud Files(英国).
我创建了一个我正在创建Bean的类;
import com.google.common.io.ByteSource;
import com.google.common.io.Files;
import org.jclouds.ContextBuilder;
import org.jclouds.io.Payload;
import org.jclouds.io.Payloads;
import org.jclouds.openstack.swift.v1.features.ObjectApi;
import org.jclouds.rackspace.cloudfiles.v1.CloudFilesApi;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* Class WebStorage
*
*/
public class WebStorage {
private final String region = "lon";
private final String provider = "rackspace-cloudfiles-uk";
private String username;
private String apiKey;
private String container;
private String url;
private CloudFilesApi cloudFilesApi;
public WebStorage(String username, String apiKey, String container, String url) {
this.username = username;
this.apiKey = …Run Code Online (Sandbox Code Playgroud) 请注意:我正在使用JClouds标记这一点,因为如果您阅读了整个问题和随后的评论,我相信这可能是JClouds的一个错误或者是对该库的误用.
我有一个可执行的JAR运行,工作一段时间,完成工作而不会抛出任何错误/异常,然后在它应该退出时永远挂起.我使用VisualVM(关注正在运行的线程)对其进行了分析,并且我还在一个日志语句中进行了打印,main()以便在应用程序挂起的位置(在方法结束时)进行打印.这是我的主要方法的最后一部分:
Set<Thread> threadSet = Thread.getAllStackTraces().keySet();
for(Thread t : threadSet) {
String daemon = (t.isDaemon()? "Yes" : "No");
System.out.println("The ${t.getName()} thread is currently running; is it a daemon? ${daemon}.");
}
Run Code Online (Sandbox Code Playgroud)
当我的JAR执行此代码时,我看到以下输出:
The com.google.inject.internal.util.Finalizer thread is currently running; is it a daemon? Yes.
The Signal Dispatcher thread is currently running; is it a daemon? Yes.
The RMI Scheduler(0) thread is currently running; is it a daemon? Yes.
The Attach Listener thread is currently running; is it a daemon? …Run Code Online (Sandbox Code Playgroud) 我有一个Spring MVC 4.0.1 Web应用程序,需要将文件上传到Rackspace Cloud Files.我正在使用Apache jClouds来执行此操作.尝试使用以下代码创建BlobStore时:
BlobStoreContext context = ContextBuilder.newBuilder("cloudfiles-us").credentials("username","password").buildView(BlobStoreContext.class);
Run Code Online (Sandbox Code Playgroud)
我得到以下异常:
com.google.inject.CreationException: Guice creation errors:
1) No implementation for com.google.common.base.Supplier<java.lang.String> annotated with @org.jclouds.openstack.swift.TemporaryUrlKey() was bound.
while locating com.google.common.base.Supplier<java.lang.String> annotated with @org.jclouds.openstack.swift.TemporaryUrlKey()
for parameter 4 at org.jclouds.openstack.swift.blobstore.SwiftBlobSigner.<init>(SwiftBlobSigner.java:88)
at org.jclouds.cloudfiles.CloudFilesApiMetadata$CloudFilesTemporaryUrlExtensionModule.bindRequestSigner(CloudFilesApiMetadata.java:101)
2) No implementation for org.jclouds.openstack.swift.CommonSwiftClient was bound.
while locating org.jclouds.openstack.swift.CommonSwiftClient
for parameter 4 at org.jclouds.cloudfiles.blobstore.CloudFilesBlobStore.<init>(CloudFilesBlobStore.java:63)
at org.jclouds.cloudfiles.blobstore.config.CloudFilesBlobStoreContextModule.configure(CloudFilesBlobStoreContextModule.java:64)
3) No implementation for org.jclouds.openstack.swift.CommonSwiftClient was bound.
while locating org.jclouds.openstack.swift.CommonSwiftClient
for parameter 0 at org.jclouds.openstack.swift.blobstore.strategy.internal.SequentialMultipartUploadStrategy.<init>(SequentialMultipartUploadStrategy.java:51)
while locating com.google.inject.Provider<org.jclouds.openstack.swift.blobstore.strategy.internal.MultipartUploadStrategy>
for parameter 14 at org.jclouds.cloudfiles.blobstore.CloudFilesBlobStore.<init>(CloudFilesBlobStore.java:63)
at …Run Code Online (Sandbox Code Playgroud) 我是芭蕾舞女演员的新手。我将平台库作为可执行 jar 导入,这是使用 jclouds 的 openstack swift api 在 java 中的互操作方法调用。
JCLOUDS 存在一个已知问题,即在Spring Boot 应用程序中使用 Rackspace 时,由于高于 2.5 的 gson 版本问题与 jclouds Apache jclouds java.lang.NoSuchMethodError不兼容而无法构建 。
尝试从我的 bal 文件中执行这个 inter op 方法调用时,我遇到了同样的错误,该文件是在芭蕾舞演员构建期间构建的。检查芭蕾舞女演员在项目构建期间创建的 jar 后,发现该 jar 是使用一组预构建的 gson 2.7 依赖项创建的。
有什么办法可以改变这种依赖关系,我也不太清楚芭蕾舞女演员如何在 bal 文件的构建阶段打包所有这些 jar。
这将有助于详细了解调用 ballerina build 时会发生什么。
是否可以使用Puppet设置,使用JClouds在云上实例化新虚拟机,然后通过Puppet定义和实现其配置(软件堆栈)?
或者Puppet的本质是否存在某些内在因素阻止其在AWS,RackSpace或Heroku等云提供商上的使用?
jclouds ×10
java ×8
amazon-s3 ×2
cloud ×2
ballerina ×1
cloudfiles ×1
concurrency ×1
deadlock ×1
grails ×1
guava ×1
guice ×1
infinispan ×1
lucene ×1
puppet ×1
rackspace ×1
spring ×1
spring-boot ×1
terracotta ×1