Comment configurer les temps de charge de tissage avec AspectJ et Tomcat?
J'ai essayé de configurer les temps de charge de tissage (pour faire du profilage avec Perf4J) de la manière suivante:
1) j'ai ajouté aop.xml
à META-INF
dossier. Lorsqu'il est déployé, le META-INF est placé dans l'artefact répertoire racine (c'est à dire MyAppDeployed/META-INF
).
2) j'ai mis aspectjrt-1.6.1.jar
, aspectjweaver-1.6.1.jar
, commons-jexl-1.1.jar
, commons-logging.jar
à la Tomcat/lib
dossier (j'ai d'abord essayé MyAppDeployed/WEB-INF/libs
mais il n'a pas de travail).
3) j'ai ajouté -javaagent:C:\apache-tomcat-6.0.33\lib\aspectjweaver-1.6.1.jar
de VM options lors du démarrage de Tomcat.
4) Mon 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>
Je ne vois aucun signe que les temps de charge de tissage qui se passe. Ni erreur-les rapports, ni les résultats nécessaires. Le seul message d'erreur que j'ai est:
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
dans un cas, quand je fais une erreur dans un aspectjweaver-1.6.1.jar
nom lorsque vous spécifiez un javaagent paramètre. Si c'est écrit correctement - pas de messages d'erreur sont imprimés.
Toutes les idées, ce que je fais mal?
P. S.-je utiliser Java 5, et j'ai essayé la même chose avec les 1.5.4
version de la aspectj avec exactement les mêmes résultats.
J'ai une situation similaire, mais avoir de travail lorsque l'annotation est sur ma classe d'implémentation.Est votre com.mypackages.MyClass une interface ou la mise en œuvre? Ma aspects n'ont pas été prise en tissé quand j'ai l'annotation sur l'interface. Aussi une chose que j'ai l'aop.xml fichier ../webapps/MyAppDeployed/WEB-INF/classes/META-INF/aop.xml vous ne savez pas si cela fait une différence.
OriginalL'auteur Roman | 2012-04-05
Vous devez vous connecter pour publier un commentaire.
Si vous voulez utiliser le temps de chargement de tissage, vous pouvez d'abord compiler vos classes avec javac comme d'habitude, puis compilez votre aspect(s) avec (i)ajj. Vous pouvez le faire avec une tâche ant comme ci-dessous
Il suffit d'avoir aspectjrt.jar dans le classpath ("maître-classpath") lors de la compilation.
Depuis toutes mes classes Java dans ${src.dir}, je donne une liste des sources de iajc. Dans la liste de la source il y a une seule ligne.
sources.lst
J'ai mis certains de iajc de la tâche attributs comme suit
Quand je lance la compilation aspect de la tâche, j'ai un pot jar_file_name.jar fichier contient
Et enfin ajouter l' *jar_file_name.jar* pour votre application web WEB-INF/lib dossier.
Puis démarrer Tomcat avec -javaagents:/path_to_aspectjweaver.jar comme vous l'avez fait avant.
Quand j'ai mis la aop.xml (ou aop-ajc.xml) dans META-INF sous la guerre de fichier directement, il ne fonctionne pas. De cette façon (je veux dire en séparant les aspects de classes dans un bocal) fonctionne très bien pour moi.
Espère que cette aide.
outxml="true"
lors de la construction. Sans cela, vous n'avez pas leMETA-INF/aop-ajc.xml
que le aspectjweaver utilise afin de savoir quelles sont les aspects appliquer.OriginalL'auteur azizunsal
J'ai essayé de résoudre le même problème dans Tomcat. Outre -javaagent option, vous devez vous assurer que le aop.xml doit être, en vertu de la WEB-INF/classes/META-INF dir. Ce qui a fait la différence pour moi.
OriginalL'auteur Naresh Dhiman