The problem with allowing that setting in aop.xml is that I'd have to initialize the weaver enough to discover the aop.xml and determine that it didn't have to do anything - normally the settings in the aop.xml are just for the instance of the weaver that is discovering that aop.xml. A system property completely avoids all this messing about, but I understand it can be a bit more fiddly to configure.
mmm, but I suppose if it is treated as a kind 'global' setting then I could use aop.xml. The first time any aop.xml file is encountered, this value would apply across all future classloaders encountered in the system. In a 'typical' configuration where some other classloaders are encountered first (before your Jsp ones), this would probably behave how we'd like. The list is comma delimited, yes. Andy On 5 January 2012 15:08, yohan chandra <[email protected]> wrote: > Thanks, > > It works nicely, below is some log: > Line 24: aj.weaving.loadersToSkip is set. Skipping loaders: > 'weblogic.servlet.jsp.JspClassLoader' > Line 172: aj.weaving.loadersToSkip = weblogic.servlet.jsp.JspClassLoader > Line 7611: debug: no weaver created for loader > 'weblogic.servlet.jsp.JspClassLoader' > Line 7623: debug: no weaver created for loader > 'weblogic.servlet.jsp.JspClassLoader' > Line 7624: debug: no weaver created for loader > 'weblogic.servlet.jsp.JspClassLoader' > Line 7625: debug: no weaver created for loader > 'weblogic.servlet.jsp.JspClassLoader' > Line 7656: debug: no weaver created for loader > 'weblogic.servlet.jsp.JspClassLoader' > Line 7672: debug: no weaver created for loader > 'weblogic.servlet.jsp.JspClassLoader' > the weaver is not created for any JspClassLoader and the page is loaded very > fast. with precompiled jsp, the jsp is displayed instantly, no more delay. > Thanks a lot for the help. > > Is it possible to configure this outside of system property? probably in > aop.xml? > aj.weaving.loadersToSkip=weblogic.servlet.jsp.JspClassLoader > > How to set if I want to skip more loaders? is it coma delimited? > > Regards, > - Yohan - > > > On Wed, Jan 4, 2012 at 6:18 PM, Andy Clement <[email protected]> > wrote: >> >> ok, I just decided to implement what might help you here, if it proves >> successful I'll commit it. You will need to use this special dev >> build of AspectJ weaver: >> >> >> http://www.eclipse.org/downloads/download.php?file=/tools/aspectj/dev/aspectjweaver-skiploaders.jar >> >> and set this system property: >> aj.weaving.loadersToSkip=weblogic.servlet.jsp.JspClassLoader >> >> You will see debug output if the system property is picked up and then >> again when loaders are ignored, like this: >> >> aj.weaving.loadersToSkip is set. Skipping loaders: >> 'sun.misc.Launcher$AppClassLoader' >> >> debug: no weaver created for loader 'sun.misc.Launcher$AppClassLoader' >> >> I imagine you are just suffering the startup time of the weaver. let >> me know how that works out for you. >> >> Incidentally the 'long' match times you are seeing for those spring >> related pointcuts should improve with Spring 3.1, I saw a jira go by >> the other day about optimizing them. >> >> cheers, >> Andy >> >> On 3 January 2012 12:12, yohan chandra <[email protected]> wrote: >> > Hi, >> > >> >> Are you confident your pointcuts aren't doing unnecessary matching, as >> >> that will also hurt startup time. Are they all using within() clauses >> >> to guard the set of types against which they will apply? You might >> >> want to use the timers support to see if the pointcuts are spending a >> >> lot of time matching: >> >> >> >> >> >> http://andrewclement.blogspot.com/2009/a11/aspectj-profiling-pointcut-matching.html >> > >> > >> > for within() clauses, I use include within options from aop.xml and only >> > include necessary classes, for example: >> > <include >> > within="com.services.factory.account.AccountDbServicesCareImpl"/> >> > <include >> > within="com.services.factory.mobile.MobileDbServicesCareImpl"/> >> > <include >> > >> > within="com.services.factory.resetpassword.CommonResetPasswordServicesImpl"/> >> > <include within="com.services.tlg.utils.AddContractUtil"/> >> > <include within="com.servlets.SalesPortalServlet"/> >> > <include within="com.utils.CareComLogon"/> >> > <include within="com.utils.CareLogonUtil"/> >> > <include within="com.utils.CSSUtil"/> >> > . . . . >> > >> > I have enabled the -timers option and below are from the logs: >> > Line 4199: [ChangeAwareClassLoader@1e50bd5] info Pointcut fast matching >> > cost >> > (total=101ms for 3000 fast match calls): >> > Line 4226: [ChangeAwareClassLoader@1e50bd5] info Pointcut matching cost >> > (total=7805ms for 50000 joinpoint match calls): >> > >> > I checked the time logs, most of them are about 0-2ms, several 200ish >> > ms, >> > only two are outstanding (>1000ms): >> > fast matching: >> > Line 4200: [ChangeAwareClassLoader@1e50bd5] info Time:31ms (types:#428) >> > fast >> > matching against ((((execution(* *(..)) && >> > this(BindingTypePattern(java.lang.Object, 0))) && >> > @annotation(org.springframework.transaction.annotation.Transactional)) >> > && >> > >> > persingleton(org.springframework.transaction.aspectj.AnnotationTransactionAspect)) >> > || (((execution(public * >> > (@org.springframework.transaction.annotation.Transactional *).*(..)) && >> > this(BindingTypePattern(java.lang.Object, 0))) && >> > @this(org.springframework.transaction.annotation.Transactional)) && >> > >> > persingleton(org.springframework.transaction.aspectj.AnnotationTransactionAspect))) >> > Line 4205: [ChangeAwareClassLoader@1e50bd5] info Time:1ms (types:#108) >> > fast >> > matching against (((call(* >> > com.cv.webservices.client.GenerateOOWQuestionsAnswers_Impl.*(..)) && >> > if()) >> > && persingleton(com.aspect.CustomerVerifyAdvice)) || ((call(* >> > com.cv.webservices.client.GenerateOOWQuestionsAnswersPortType.*(..)) && >> > if()) && persingleton(com.aspect.CustomerVerifyAdvice))) >> > >> > matching: >> > Line 4227: [ChangeAwareClassLoader@1e50bd5] info Time:1745ms (jps:#4104) >> > matching against ((((execution(* *(..)) && >> > this(BindingTypePattern(java.lang.Object, 0))) && >> > @annotation(org.springframework.transaction.annotation.Transactional)) >> > && >> > >> > persingleton(org.springframework.transaction.aspectj.AnnotationTransactionAspect)) >> > || (((execution(public * >> > (@org.springframework.transaction.annotation.Transactional *).*(..)) && >> > this(BindingTypePattern(java.lang.Object, 0))) && >> > @this(org.springframework.transaction.annotation.Transactional)) && >> > >> > persingleton(org.springframework.transaction.aspectj.AnnotationTransactionAspect))) >> > Line 4233: [ChangeAwareClassLoader@1e50bd5] info Time:4174ms (jps:#8095) >> > matching against (((call(* >> > com.cv.webservices.client.GenerateOOWQuestionsAnswers_Impl.*(..)) && >> > if()) >> > && persingleton(com.aspect.CustomerVerifyAdvice)) || ((call(* >> > com.cv.webservices.client.GenerateOOWQuestionsAnswersPortType.*(..)) && >> > if()) && persingleton(com.aspect.CustomerVerifyAdvice))) >> > >> > However I don't think the matching time is the issue because our >> > application >> > does not weave anything to the jsp classes (jsp is not even included in >> > our >> > aop.xml), I checked the log all this weaving time info is from >> > changeAwareClassLoader only, nothing from the jspClassLoader. >> > >> > I observed the log, when the jsp is loaded, changeAwareClassLoader is >> > not >> > printing any log, the only related aspectj logs are registration of >> > jspclassloaders and the aspects. >> > >> > I took the log for a page in our application and found out 8 jsp >> > classloaders were registered and each registration took about ~1-2s (the >> > log >> > was moving slowly and after 1-2s another jsp class loader registration >> > started and took about the same time) >> > ... >> > [JspClassLoader@14e2e89] info AspectJ Weaver Version 1.6.9 built on >> > Monday >> > Jul 5, 2010 at 15:28:35 GMT >> > [JspClassLoader@14e2e89] info register classloader >> > weblogic.servlet.jsp.JspClassLoader@14e2e89 >> > . . . >> > [JspClassLoader@1b150] info AspectJ Weaver Version 1.6.9 built on Monday >> > Jul >> > 5, 2010 at 15:28:35 GMT >> > [JspClassLoader@1b150] info register classloader >> > weblogic.servlet.jsp.JspClassLoader@1b150 >> > . . . >> > [JspClassLoader@1201afd] info AspectJ Weaver Version 1.6.9 built on >> > Monday >> > Jul 5, 2010 at 15:28:35 GMT >> > [JspClassLoader@1201afd] info register classloader >> > weblogic.servlet.jsp.JspClassLoader@1201afd >> > . . . >> > [JspClassLoader@c0cd51] info AspectJ Weaver Version 1.6.9 built on >> > Monday >> > Jul 5, 2010 at 15:28:35 GMT >> > [JspClassLoader@c0cd51] info register classloader >> > weblogic.servlet.jsp.JspClassLoader@c0cd51 >> > . . . >> > [JspClassLoader@146b6a1] info AspectJ Weaver Version 1.6.9 built on >> > Monday >> > Jul 5, 2010 at 15:28:35 GMT >> > [JspClassLoader@146b6a1] info register classloader >> > weblogic.servlet.jsp.JspClassLoader@146b6a1 >> > . . . >> > [JspClassLoader@1b52826] info AspectJ Weaver Version 1.6.9 built on >> > Monday >> > Jul 5, 2010 at 15:28:35 GMT >> > [JspClassLoader@1b52826] info register classloader >> > weblogic.servlet.jsp.JspClassLoader@1b52826 >> > . . . >> > [JspClassLoader@1521eab] info AspectJ Weaver Version 1.6.9 built on >> > Monday >> > Jul 5, 2010 at 15:28:35 GMT >> > [JspClassLoader@1521eab] info register classloader >> > weblogic.servlet.jsp.JspClassLoader@1521eab >> > . . . >> > [JspClassLoader@1cdee1f] info AspectJ Weaver Version 1.6.9 built on >> > Monday >> > Jul 5, 2010 at 15:28:35 GMT >> > [JspClassLoader@1cdee1f] info register classloader >> > weblogic.servlet.jsp.JspClassLoader@1cdee1f >> > >> > >> > Regards, >> > - yohan chandra - >> > >> > >> > _______________________________________________ >> > aspectj-users mailing list >> > [email protected] >> > https://dev.eclipse.org/mailman/listinfo/aspectj-users >> > >> _______________________________________________ >> aspectj-users mailing list >> [email protected] >> https://dev.eclipse.org/mailman/listinfo/aspectj-users > > > > _______________________________________________ > aspectj-users mailing list > [email protected] > https://dev.eclipse.org/mailman/listinfo/aspectj-users > _______________________________________________ aspectj-users mailing list [email protected] https://dev.eclipse.org/mailman/listinfo/aspectj-users
