Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] aspectj and jsp load

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 <yohan.chandra@xxxxxxxxx> 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
> aspectj-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>


Back to the top