3. weld-core
I have changed catching exception from ResourceLoadingException to
Throwable. It is widest possible catch declaration, in fact catching
specific exceptions would be probably better or GAE exceptions should
be catch deeper and rethrown as ResourceLoadingException.
There is problem with adding this classes during deployment:
org.jboss.seam.solder.bean.generic.GenericBeanExtension$1
org.jboss.seam.solder.util.collections.AbstractMultiset$ElementSet$1
org.jboss.logging.JBossLogManagerProvider
org.jboss.seam.solder.bean.defaultbean.DefaultBeanExtension$1
org.jboss.seam.solder.util.collections.AbstractMultimap$KeySet$1
org.jboss.logging.Log4jLogger
org.jboss.logging.JBossLogManagerLogger
>> Caused by: java.security.AccessControlException: access denied
(java.lang.RuntimePermission accessDeclaredMembers)
What exactly is the issue here?
Reflection should still work on GAE.
4. weld-core
In InstantiatorFactory I have commented out adding
ReflectionFactoryInstantiator. It is not allowed to use
ReflectionFactory on GAE. Adding reflection factory should be check
programmatically before creating new instance in some if clause.
>> java.lang.NoClassDefFoundError: sun.reflect.ReflectionFactory is a restricted
class. Please see the Google App Engine developer's guide for more details.
>> at com.google.appengine.runtime.Request.process-609c29691be26e8f(Request.java)
>> at sun.reflect.ReflectionFactory.<clinit>(ReflectionFactory.java)
>> at java.lang.reflect.Method.invoke(Method.java:43)
>> at
org.jboss.weld.util.reflection.instantiation.ReflectionFactoryInstantiator.<init>(ReflectionFactoryInstantiator.java:45)
This looks like RFI should catch Throwable instead of Exception in ctor.
And I haven't hit this.
When does InstantiatorFactory get used?
I have not tested yet which solder features are working and which
ones
not. In wicket page injection works as expected.
Solder works for me, but I only use @Resource handling atm.
If you are interested in providing support for GAE, I think it would
be great to have this changes apply to master branch. Some of them
(especially 3 and 4) need some more development and propably support
from weld team.
If you can provide some example / test, I'll definitely have a look at this.
I'm playing with GAE for some JavaEE+GAE portability POC,
I'll post about exactly what I'm doing asap -- probably around JBW time.
-Ales