Sorry, I meant to say:

!within(org.apache.struts..*)

This is for Struts 1. If you use Struts 2 maybe you need to use 

!within(org.apache.struts2..*) && !within(com.opensymphony..*)


--
Alexander Kriegisch
https://scrum-master.de
 
 
Alexander Kriegisch schrieb am 21.08.2016 18:46:

Hi Eric.

What is the problem with approach #1? That Struts classes are not loaded correctly anymore? Do you even want to advse them? If that is not necessary why not just exclude them by !within(org.apache.struts)?

Yes, class-loading sequence is relevant for AspectJ LTW.

Using call() instead of execution() does not solve the root cause of your problem, I assume. It only bloats the bytecode because many more joinpoints need to be woven.

Regards
--
Alexander Kriegisch
https://scrum-master.de
 
Eric B schrieb am 21.08.2016 15:03:
I have a "fragile" legacy app that is running on JBoss 4.  That is to say, that any changes to the app require a full manual regression test which are long and expensive.  I'm trying to add some specific logging to the app, so I figured that using AOP to intercept method executions would be the simplest way without altering the binaries.
 
But here is where I am running into classloading problems when I am trying to advise classes that are already loaded by the classloader by the time my ear gets loaded.
 
My EAR is structured as the follows:
 
EAR
 - webapp.war
    \ WEB-INF/lib
        - webstuff.jar
        - WebClasses.jar
        - struts.jar
 - EJB.jar
 - utils.jar
 
 
JBoss is set to load as parent-first, and modifying the sequence isn't an option.
 
So I have a few problems here:
1) If I drop my aspect.jar in my EAR/lib folder, and enable LTW on the command line, it is able to successfully advise all my classes in EJB.jar, utils.jar and webstuff.jar.  I am even able to advise methods in struts.jar, but unable to use any struts classes as the classloader for the aspect doesn't "see" anything in struts.jar (I get ClassDefNotFoundException).
 
2) If I move my aspect.jar into my WEB-INF/lib folder, it doesn't successfully advise anything in EJB.jar or utils.jar, I suspect b/c they are loaded prior to the aspect being loaded by the classloader.
 
My pointcuts are all "execution" pointcuts.
 
Similarly if I try to advise container classes with "execution" pointcuts, they never seem to trigger.
 
Is there a simple solution for this?  Does one need to take the class-loading sequence into account when using LTW?  Thinking outloud, would changing all my "execution" pointcuts to "call" make a difference?
 
My aop.xml is fairly basic:
   <aspectj>
            <aspects>
              <aspect name="com.security.logger.LoginLogger"/>
              <aspect name="com.security.logger.EJBAccessErrorLogger"/>
            </aspects>

            <weaver options="-verbose">
            </weaver>
   </aspectj>
Do I need to specify <includes> to the aspectj compiler?  I thought all classes were "included" by default.
 
Thanks!

Eric
_______________________________________________
aspectj-users mailing list
aspectj-users@eclipse.org
To change your delivery options, retrieve your password, or unsubscribe from 
this list, visit
https://dev.eclipse.org/mailman/listinfo/aspectj-users

Reply via email to