Create an AspectJ aspect extending abstract aspect provided with InfraRED, as:
import net.sf.infrared.aspects.aj.AbstractApiAspect; public aspect LayerOneAspect extends AbstractApiAspect { // This pointcut matches execution of all public APIs in // com.my.app.layer1 and subpackages public pointcut apiExecution(): execution( public * com.my.app.layer1.*...*(..) ); // InfraRED will record executions of all public APIs in // com.my.app.layer1 and subpackages as Layer One. public String getLayer() { return "Layer One"; } }
Compile this aspect with ajc
tool that ships with AspectJ. You will have to
add infrared-agent-all-servlet-2.4.1.BETA.jar to the CLASSPATH. Also remember to use
ajc
that ships with AspectJ 5 or later.
Create a file META-INF/aop.xml that can be loaded by the Classloader which loads the application. For a WAR web application, this can be put in WEB-INF/classes (so that we have the file WEB-INF/classes/META-INF/aop.xml). For an EAR application in Weblogic, this can be put in APP-INF/classes (so that we have the file APP-INF/classes/META-INF/aop.xml). For an EAR application in JBoss, this has to be put in the META-INF dir in the root of the ear.
The contents of this file should be:
<aspectj> <aspects> <aspect name="LayerOneAspect"/> </aspects> </aspectj>
Layers are typically identified by packages.
More details on how to identify various layers are given in the Configuration page