Hi Geir,

Based on the stack trace, the 1.2.0 ReflectionBuilder source code [1]
shows it is failing during a Commons BeanUtils call that looks a
JavaBeans PropertyDescriptor on a configured object in shiro.ini:

PropertyDescriptor descriptor =
PropertyUtils.getPropertyDescriptor(object, propertyName);

The relevant stack trace indicates that the ClassLoader lookup of the
bytes of the actual object class (down to FileInputStream) is failing:

Caused by: com.google.apphosting.api.DeadlineExceededException: This
request (1f30ed149a83a157) started at 2012/08/29 11:38:38.702 UTC and
was still executing at 2012/08/29 11:39:38.196 UTC.
        at 
com.google.appengine.runtime.Request.process-1f30ed149a83a157(Request.java)
        at java.io.FileInputStream.readBytes(Native Method)
        at java.io.FileInputStream.read(FileInputStream.java:231)
        at sun.misc.Resource.getBytes(Resource.java:124)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:273)
        at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:616)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Class.java:2444)
        at java.lang.Class.getDeclaredMethods(Class.java:1808)
        at java.beans.Introspector$1.run(Introspector.java:1324)
        at java.security.AccessController.doPrivileged(Native Method)
        at 
java.beans.Introspector.getPublicDeclaredMethods(Introspector.java:1322)
        at java.beans.Introspector.getTargetMethodInfo(Introspector.java:1188)
        at java.beans.Introspector.getBeanInfo(Introspector.java:423)
        at java.beans.Introspector.getBeanInfo(Introspector.java:189)
        at 
org.apache.commons.beanutils.PropertyUtilsBean.getPropertyDescriptors(PropertyUtilsBean.java:980)


Could it be that ClassLoader lookup (or repeated ClassLoader lookup,
as would be done with reflection-based configuration like shiro.ini)
is slow on Google App Engine?  Is there a latency based on where the
actual class files reside?

I'm not entirely sure why you're experiencing this particular issue -
I know that other GAE users use Shiro without problems - I just can't
speak to this particular issue.

[1] 
https://svn.apache.org/repos/asf/shiro/tags/shiro-root-1.2.0/core/src/main/java/org/apache/shiro/config/ReflectionBuilder.java

HTH,

--
Les Hazlewood | @lhazlewood
CTO, Stormpath | http://stormpath.com | @goStormpath | 888.391.5282
Stormpath wins GigaOM Structure Launchpad Award! http://bit.ly/MvZkMk

Reply via email to