[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [aspectj-users] Please help with weaving not finding my class problem
|
It appears that for some reason the classes to be woven are
(sometimes) getting loaded before Spring's application context is
initialized (which configures load-time weaving). You could try two
things (besides figuring out why is that class getting loaded sooner
and inconsistently).
1. Try AspectJ's load-time weaver i.e. use
-javaagent:/path/to/aspectjweaver.jar instead of spring-agent.jar (and
remove <context:load-time-weaver>).
2. Use compile-time weaving (it works). Recently there was a thread
showing how to configure Maven, so that may be a good place to start.
-Ramnivas
On Mon, Jun 8, 2009 at 7:35 AM,
fe.character.guide<fe.character.guide@xxxxxxxxx> wrote:
> Hi everyone,
>
> I have a big problem using AspectJ and Spring, although I suspect this
> problem may be AspectJ-specific. However, I can't be sure.
>
> I am trying to use Spring's @Configurable to add dependency injection to my
> domain objects. The reason I don't think I have a Spring issue is that I
> have this feature working fine - the one and only object that is being
> injected is working with the Spring aspect that comes out of the box.
>
> The problem I am having is that sometimes the AspectJ weaver does not "see"
> the object that I need weaved. When I turn on DEBUG in log4j, I sometimes
> see that my class isn't in the list of classes that the weaver is iterating
> through when it starts up. Do you know how this could happen? My class is
> obviously in the classpath, because it gets used in the tests or in the web
> container afterward.
>
> This happens in a variety of cases. When I test a class in
> project.domain.subpackage, the weaving works fine. If I even test the entire
> package with multiple test classes, it works great. However, when I test all
> the Test classes in project.domain.*, the weaver cannot find my class
> anymore. The same is true testing everything in project.*,
> project.controllers.*, etc.
>
> Before you say anything, I am using the exact jvm settings when I run JUnit,
> and the same thing happens when I test in Maven as well (so it's not IDE
> specific).
>
> This problem is annoying enough, but sometimes Tomcat calling aspectJ
> doesn't see the class either. I have to shut down and start up the server,
> hoping that each time aspectJ will weave the class I need it to. Right now,
> it's about a 30% success rate. Once AspectJ weaves my class, everything is
> golden.
>
> I can only assume that this is all the same problem. What could be causing
> this?
>
> These are the arguments I am passing into the JVM:
>
> -Xms256m -Xmx512m -javaagent:"C:\Documents and
> Settings\Username\.m2\repository\org\springframework\spring-agent\2.5.6.SEC01\spring-agent-2.5.6.SEC01.jar"
>
> This is my aop.xml:
>
> <aspectj>
> <weaver options="-showWeaveInfo
> -XmessageHandlerClass:org.springframework.aop.aspectj.AspectJWeaverMessageHandler">
> <include within="jobprep.domain..*"/>
> <exclude within="jobprep.domain..*CGLIB*"/>
> </weaver>
> </aspectj>
>
> These are the spring application context lines to get it to work:
>
> <context:annotation-config />
> <context:spring-configured />
> <context:load-time-weaver />
> <context:component-scan
> base-package="jobprep.dao,jobprep.service,jobprep.domain.openended" />
>
> I really don't see what I'm doing wrong, and if I can't get this ramdom
> behaviour fixed... then I think I'm going to have to dump AOP/aspectJ
> completely. I really don't want to.
>
> Has anyone used @Configurable with compile-time weaving to good effect? If I
> can do this at compile time, I would LOVE to. I am only weaving 1 class, so
> the hit to compile time is a non-issue here.
>
> Please help.
>
> Ken
>
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>
>