Я пытался настроить load-time weaving (для выполнения профилирования с помощью Perf4J) следующим образом:
1) Я добавил aop.xml
в папку META-INF
. При развертывании META-INF помещается в корневой каталог артефакта (например, MyAppDeployed/META-INF
).
2) Ставлю аспектжрт-1.6.1.jar
, аспектжвивер-1.6.1.jar
, commons-jexl-1.1.jar
, commons-logging.jar
в папку Tomcat/lib
(сначала я пробовал MyAppDeployed/WEB-INF/libs
, но это тоже не сработало).
3) Я добавил -javaagent:C:\apache-tomcat-6.0.33\lib\aspectjweaver-1.6.1.jar
в параметры виртуальной машины при запуске Tomcat.
4) Мой aop.xml
:
<!DOCTYPE aspectj PUBLIC "-//AspectJ//DTD//EN" "http://www.eclipse.org/aspectj/dtd/aspectj.dtd">
<aspectj>
<aspects>
<aspect name="org.perf4j.log4j.aop.TimingAspect"/>
</aspects>
<weaver options="-verbose -showWeaveInfo">
<include within="com.mypackages.MyClass"/>
</weaver>
</aspectj>
Я не вижу никаких признаков того, что происходит переплетение во время загрузки. Ни сообщений об ошибках, ни необходимых результатов.Единственное сообщение об ошибке, которое у меня есть:
Error occurred during initialization of VM
agent library failed to init: instrument
Error opening zip file: C:\apache-tomcat-6.0.33\lib\wrong-jar.jar
в случае, когда я делаю ошибку в имени aspectjweaver-1.6.1.jar
при указании параметра javaagent. Если написано правильно - сообщения об ошибках не печатаются.
Есть идеи, что я делаю не так?
П.С. Я использую Java 5 и пробовал то же самое с 1.5.4
версией аспекта с точно такими же результатами.