Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] weaveInfo shows join point match, but advice method not running

Hi,

Maybe I need to see a more complete codebase, but on first look, the
weaveinfo says:

> [AppClassLoader@64601bb1] weaveinfo Join point 'method-execution(void com.mystuff.common.util.Stuff.Timer.start())' in
> Type 'com.mystuff.common.util.Stuff' (Stuff.java:25) advised by around advice from
> 'org.springbyexample.aspectjLoadTimeWeaving.PerformanceAdvice' (PerformanceAdvice.java)

which tells me Stuff.Timer.start() is advised.  Then your code to
exercise it is:

>          com.mystuff.common.util.Stuff stuff = new Stuff();
>          stuff.doSomething();

I didn't see a weave info saying doSomething() was advised?  Does
doSomething call Stuff.Timer.start()?

Perhaps not an issue, but I might have expected double dots in these
include lines to ensure subpackages are included:

>     <include within="com.mystuff.common.util.*"/>
>     <include within="org.springbyexample.aspectjLoadTimeWeaving.*" />

If you want to send me a more complete program, I'll tell you whats up
with it - just email it to me.

cheers
Andy

On 25 July 2011 23:38, Anthony Tang <aant00@xxxxxxxxx> wrote:
> Hi -
> I have the following advice:
>     @Pointcut("execution(public * com.mystuff.common.util..*.*(..))")
>     public void aspectjLoadTimeWeavingExamples() {
>
>     }
>     @Around("aspectjLoadTimeWeavingExamples()")
>     public Object myadvice(ProceedingJoinPoint pjp) throws Throwable {
>         final Logger logger =
> LoggerFactory.getLogger(pjp.getSignature().getDeclaringType());
>         logger.debug(pjp.getSignature().getName() + ": In advice");
>   ...
>     }
> com.mystuff.common.util..*.* is defined in another jar in the classpath.
>  aop.xml is as follows:
> <aspectj>  <aspects>
>     <aspect
> name="org.springbyexample.aspectjLoadTimeWeaving.PerformanceAdvice"/>
>   </aspects>
>   <weaver options="-verbose -showWeaveInfo">
>     <!-- other developers specify here their classes they wish to weave -->
>     <include within="com.mystuff.common.util.*"/>
>     <include within="org.springbyexample.aspectjLoadTimeWeaving.*" />
>   </weaver>
> </aspectj>
> The main code runs:
>          com.mystuff.common.util.Stuff stuff = new Stuff();
>          stuff.doSomething();
> I see the following weave info output:
> [AppClassLoader@64601bb1] weaveinfo Join point
> 'method-execution(void com.mystuff.common.util.Stuff.Timer.start())' in Type
> 'com.mystuff.common.util.Stuff' (Stuff.java:25) advised by around advice
> from 'org.springbyexample.aspectjLoadTimeWeaving.PerformanceAdvice'
> (PerformanceAdvice.java)
>
> But the advice method (myadvice) is never executed.  If I replace the
> pointcut expression with:
> @Pointcut("execution(public *
> org.springbyexample.aspectjLoadTimeWeaving...*.*(..))")
>
> I again get a similar message as above:
> [AppClassLoader@64601bb1] weaveinfo Join point 'method-execution(void
> org.springbyexample.aspectjLoadTimeWeaving.AnotherThing.doSomething())' in
> Type 'org.springbyexample.aspectjLoadTimeWeaving.AnotherThing'
> (AnotherThing.java:10) advised by around advice from
> 'org.springbyexample.aspectjLoadTimeWeaving.PerformanceAdvice'
> (PerformanceAdvice.java)
>
> but the advice runs as expected when calling the matching method.
> Any idea what's wrong?  I'm using aspectj 1.6.9, and the following startup
> parameter:
> -javaagent:/home/myhome/tools/aspectj/lib/aspectjweaver.jar.
>
> Thanks for any help.
> - Anthony
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>
>


Back to the top