Thank you Ignassi for your detailed answer. I'm pretty sure that if jclouds is supported on GAE, you will have many newcomers. Sure, I will open a JIRA ticket, but can you confirm that this requires me to create an account, first ?
Thank you for your support. Regards, Édouard 2015-03-03 23:05 GMT+01:00 Ignasi Barrera <[email protected]>: > Hi Édouard, > > We have the GAE driver that used to work, but that was more about > configuring a single-threaded executor and some other http related stuff. > > As far as I know, the GAE support has been untested for several releases, > as I believe the community is not using it, but it is good to have a real > use case! > > I haven't seen reflection restrictions before, but I'm not a GAE user, so > I don't know the details and its limitations. Looking at the stacktrace, > it seems that the failure happens when trying to build the deserialization > context. jclouds uses Gson to deserialize the API responses, and it uses > reflection to make sure it will be able to build the corresponding Java > object, by making all the constructors accessible. > > This seems to be not allowed in GAE, and we could try to configure the GAE > module to "disable" that reflection, and use only the visible constructor. > However, this has been out there since 2013 and I'm not sure if working > only with the visible constructors would be compatible with the current > domain model of all providers. > > In any case, it is worth giving it a try. Mind opening a JIRA [1] issue so > we can properly track this? > > Thanks! > > I. > > [1] https://issues.apache.org/jira/browse/jclouds > > On 2 March 2015 at 22:16, Édouard Mercier sur Gmail < > [email protected]> wrote: > >> Hello. >> >> I've been digging a long time, both using the v1.8.1 and the >> v2.0.0-SNAPSHOT, and found no way to jclouds BlobStore to work on the >> current GAE Java flavor v1.9.18. >> >> When attempting to use the "BlobStore.putBlob()" method, I get this >> >> """ >> java.lang.SecurityException: java.lang.IllegalAccessException: >> Reflection is not allowed on java.lang.String(int,int,char[]) >> at com.google.appengine.runtime.Request.process- >> 6c82fef5146f94d9(Request.java) >> at java.lang.reflect.Constructor.setAccessible(Constructor.java:40) >> at org.jclouds.reflect.Reflection2$1.load(Reflection2.java:156) >> at org.jclouds.reflect.Reflection2$1.load(Reflection2.java:152) >> at com.google.common.cache.LocalCache$LoadingValueReference. >> loadFuture(LocalCache.java:3527) >> at com.google.common.cache.LocalCache$Segment.loadSync( >> LocalCache.java:2319) >> at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache. >> java:2282) >> at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2197) >> at com.google.common.cache.LocalCache.get(LocalCache.java:3937) >> at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3941) >> at com.google.common.cache.LocalCache$LocalLoadingCache. >> get(LocalCache.java:4824) >> at org.jclouds.reflect.Reflection2.get(Reflection2.java:345) >> at org.jclouds.reflect.Reflection2.constructors(Reflection2.java:99) >> at org.jclouds.json.internal.NamingStrategies$ >> AnnotationConstructorNamingStrategy.getDeserializer( >> NamingStrategies.java:248) >> at org.jclouds.json.internal.DeserializationConstructorAndR >> eflectiveTypeAdapterFactory.create(DeserializationConstructorAndR >> eflectiveTypeAdapterFactory.java:122) >> at com.google.gson.Gson.getAdapter(Gson.java:358) >> at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory. >> getFieldAdapter(ReflectiveTypeAdapterFactory.java:109) >> at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.access$100( >> ReflectiveTypeAdapterFactory.java:46) >> at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.<init>( >> ReflectiveTypeAdapterFactory.java:84) >> at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory. >> createBoundField(ReflectiveTypeAdapterFactory.java:83) >> at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory. >> getBoundFields(ReflectiveTypeAdapterFactory.java:129) >> at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create( >> ReflectiveTypeAdapterFactory.java:75) >> at com.google.gson.Gson.getAdapter(Gson.java:358) >> at com.google.gson.Gson.toJson(Gson.java:587) >> at com.google.gson.Gson.toJson(Gson.java:574) >> at com.google.gson.Gson.toJson(Gson.java:529) >> at com.google.gson.Gson.toJson(Gson.java:509) >> at org.jclouds.json.internal.GsonWrapper.toJson(GsonWrapper.java:52) >> at org.jclouds.googlecloudstorage.binders.MultipartUploadBinder. >> bindToRequest(MultipartUploadBinder.java:53) >> at org.jclouds.rest.internal.RestAnnotationProcessor.apply( >> RestAnnotationProcessor.java:324) >> at org.jclouds.rest.internal.RestAnnotationProcessor.apply( >> RestAnnotationProcessor.java:129) >> at org.jclouds.rest.internal.InvokeHttpMethod.toCommand( >> InvokeHttpMethod.java:188) >> at org.jclouds.rest.internal.InvokeHttpMethod.invoke( >> InvokeHttpMethod.java:84) >> at org.jclouds.rest.internal.InvokeHttpMethod.apply( >> InvokeHttpMethod.java:73) >> at org.jclouds.rest.internal.InvokeHttpMethod.apply( >> InvokeHttpMethod.java:44) >> at org.jclouds.reflect.FunctionalReflection$FunctionalInvocationHandler. >> handleInvocation(FunctionalReflection.java:117) >> at com.google.common.reflect.AbstractInvocationHandler.invoke( >> AbstractInvocationHandler.java:87) >> at com.sun.proxy.$Proxy62.multipartUpload(Unknown Source) >> at org.jclouds.googlecloudstorage.blobstore.GoogleCloudStorageBlobStore. >> putBlob(GoogleCloudStorageBlobStore.java:224) >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> at sun.reflect.NativeMethodAccessorImpl.invoke( >> NativeMethodAccessorImpl.java:57) >> at sun.reflect.DelegatingMethodAccessorImpl.invoke( >> DelegatingMethodAccessorImpl.java:43) >> at java.lang.reflect.Method.invoke(Method.java:45) >> at com.google.inject.internal.DelegatingInvocationHandler.invoke( >> DelegatingInvocationHandler.java:37) >> at com.sun.proxy.$Proxy60.putBlob(Unknown Source) >> """ >> >> exception (this one was caused using jclouds v2.0.0-SNAPSHOT). >> >> I've seen that there has been initiatives to have jclouds working on the >> GAE in the past, but would like to know if this is still on the roadmap. >> Any help which shows how to have jclouds BlobStore working on GAE is >> very welcome. >> >> Thank you for your support. Regards, >> Édouard >> > >
