12.4. Packaging AOP Applications
To deploy an AOP application in JBoss Enterprise Application Platform you need to package it. AOP is packaged similarly to SARs (MBeans). You can either deploy an XML file directly in the
deploy/
directory with the signature *-aop.xml
along with your package (this is how the base-aop.xml
, included in the jboss-aop.deployer
file works) or you can include it in the JAR file containing your classes. If you include your XML file in your JAR, it must have the file extension .aop
and a jboss-aop.xml
file must be contained in a META-INF
directory, for instance: META-INF/jboss-aop.xml
.
In the JBoss Enterprise Application Platform 5, you must specify the schema used, otherwise your information will not be parsed correctly. You do this by adding the
xmlns="urn:jboss:aop-beans:1:0
attribute to the root aop
element, as shown here:
<aop xmlns="urn:jboss:aop-beans:1.0"> </aop>
If you want to create anything more than a non-trivial example, using the
.aop
JAR files, you can make any top-level deployment contain an AOP file containing the XML binding configuration. For instance you can have an AOP file in an EAR file, or an AOP file in a WAR file. The bindings specified in the META-INF/jboss-aop.xml
file contained in the AOP file will affect all the classes in the whole WAR file.
To pick up an AOP file in an EAR file, it must be listed in the
.ear/META-INF/application.xml
as a Java module, as follows:
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE application PUBLIC '-//Sun Microsystems, Inc.//DTD J2EE Application 1.2//EN''http://java.sun.com/j2ee/dtds/application_1_2.dtd'> <application> <display-name>AOP in JBoss example</display-name> <module> <java>example.aop</java> </module> <module> <ejb>aopexampleejb.jar</ejb> </module> <module> <web> <web-uri>aopexample.war</web-uri> <context-root>/aopexample</context-root> </web> </module> </application>
Important
In the JBoss Enterprise Application Platform 5, the contents of the
.ear
file are deployed in the order they are listed in the application.xml
. When using loadtime weaving the bindings listed in the example.aop
file must be deployed before the classes being advised are deployed, so that the bindings exist in the system before (for example) the ejb
and servlet
classes are loaded. This is achieved by listing the AOP file at the start of the application.xml
. Other types of archives are deployed before anything else and so do not require special consideration, such as .sar
and .war
files.