[ https://issues.apache.org/jira/browse/AXIS2-4878?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andreas Veithen resolved AXIS2-4878. ------------------------------------ Resolution: Duplicate Fix Version/s: 1.7.0 1.6.2 Assignee: Andreas Veithen > Simple BeanInfo cache in BeanUtil.java helped us go from 48 second to 8 > second request > -------------------------------------------------------------------------------------- > > Key: AXIS2-4878 > URL: https://issues.apache.org/jira/browse/AXIS2-4878 > Project: Axis2 > Issue Type: Improvement > Components: adb > Affects Versions: 1.5.2 > Environment: Linux (Debian Lenny x86_64), JDK 1.6.0, Tomcat 6 (in > NetBeans 6.5.1). Deployed POJO service as .aar file. > Reporter: Dan Armstrong > Assignee: Andreas Veithen > Fix For: 1.6.2, 1.7.0 > > Original Estimate: 0.25h > Remaining Estimate: 0.25h > > We return arrays of complex objects - all of the same type for any particular > web services call. Axis2 was unusably slow. Upon closer inspection, it was > spending much of its time in BeanUtil. The #1 problem is that it is > performing introspection repeatedly for each and every object. Introspection > is very expensive - calling the methods once you find them is cheap. > The solution is to perform the introspection and cache the results. I added > a few lines of code to BeanUtil.java and brought our request from 48 seconds > down to 8. This solution may not be exactly how you would implement it, but > the idea is sound and the results are very impressive: > import java.util.concurrent.*; > private static final ConcurrentMap<Class<?>,BeanInfo> beanInfoCache = new > ConcurrentHashMap<Class<?>,BeanInfo>(); > // About line 140, where calls Introspector.getBeanInfo: > BeanInfo beanInfo = beanInfoCache.get(beanClass); > if(beanInfo==null) beanInfoCache.put(beanClass, beanInfo = > Introspector.getBeanInfo(beanClass, beanClass.getSuperclass())); > The map would probably need to use weak references to not prevent class > unloading. And you may not want to depend on the Java 5 generics and > concurrent collections. But the point remains - without this POJO is too > slow (rhyme intended). > Please add this to the Axis2 to benefit others. > Thank you, > Dan Armstrong > AO Industries, Inc. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: java-dev-unsubscr...@axis.apache.org For additional commands, e-mail: java-dev-h...@axis.apache.org