Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] About aop.xml scope

Hi Federico and Tahir,

Tahir guess is right : there is no "jar" scope in Java, not because it would not be a good idea, simply because there is no support for that in the Java classloading system. When using an URL classloader it is possible to know from which jar that resource is coming from, but only using methods specific to URLClassLoader and/or interpreting the Class.getResource returned URL in an implementation specific mapping, both solutions are not applicable in a real production environment, especially when web application servers come in play with their own classloaders.

Multiple aop.xml files are detected and merged together, as explained here http://www.eclipse.org/aspectj/doc/released/devguide/ltw-configuration.html :

When several configuration files are visible from a given weaving class loader their contents are conceptually merged. The files are merged in the order they are found on the search path (with a regular getResourceAsStream lookup) according to the following rules:

   *

     The set of available aspects is the set of all declared and
     defined aspects (aspect and concrete-aspect elements of the
     aspects section).

   *

     The set of aspects used for weaving is the subset of the available
     aspects that are matched by at least one include statement and are
     not matched by any exclude statements. If there are no include
     statements then all non-excluded aspects are included.

   *

     The set of types to be woven are those types matched by at least
     one weaver include element and not matched by any weaver exclude
     element. If there are no weaver include statements then all
     non-excluded types are included.

   *

     The weaver options are derived by taking the union of the options
     specified in each of the weaver options attribute specifications.
     Where an option takes a value e.g. -warn:none the most recently
     defined value will be used.

It is not an error for the same aspect to be defined to the weaver in more than one visible META-INF/aop.xml file. However, if the same concrete aspect is defined in more than one aop.xml file then an error will be issued. A concrete aspect defined in this way will be used to weave types loaded by the class loader that loaded the aop.xml file in which it was defined.


In a web application "the order they are found" will be :
- WEB-INF/classes/...
- WEB-INF/lib/*.jar (I don't know of any reliable standard on the loading order of jars here)
- Endorsed libs
- Server "common " libs
- Server libs themselves

Hope this helps,
Simone



Federico Firpo Bodner wrote:
Thanks Tahir, but my doubt is: What happens if I put a second jar file with
a second aop.xml file? Both configurations are merged? Or each jar keeps the
settings in their own aop.xml?

Regards,
Federico

-----Mensaje original-----
De: aspectj-users-bounces@xxxxxxxxxxx
[mailto:aspectj-users-bounces@xxxxxxxxxxx] En nombre de Tahir Akhtar
Enviado el: lunes, 08 de junio de 2009 11:34
Para: aspectj-users@xxxxxxxxxxx
Asunto: Re: [aspectj-users] About aop.xml scope

Hi,
Here is from my own experience:
I have a aop.xml in a jar and it is used to weave all the jars in WEB-INF/lib and all the classes in WEB-INF/classes. When I place the jar containing aop.xml in Tomcat/common/lib it can even weave the classes in jars provided by tomcat.

regards,
Tahir Akhtar
pilux wrote:
Hi All,

    I have a doubt. Settings in aop.xml are scoped only to the classes
contained in same jar file, or are exported and merged into whole JVM
weaver?

Thanks and regards, Federico

_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users

_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users


--
Simone Gianni            CEO Semeru s.r.l.           Apache Committer
http://www.simonegianni.it/



Back to the top