Wie konfiguriere ich Ladezeitweben mit AspectJ und Tomcat?

8

Ich habe versucht, das Load-Time-Weben (für das Profiling mit Perf4J) auf die nächste Art zu konfigurieren:

1) Ich habe aop.xml zum Ordner META-INF hinzugefügt. Bei der Bereitstellung wird META-INF in das Stammverzeichnis des Artefakts gestellt (d. H.% Co_de%).

2) Ich habe MyAppDeployed/META-INF , aspectjrt-1.6.1.jar , aspectjweaver-1.6.1.jar , commons-jexl-1.1.jar in den Ordner commons-logging.jar gesetzt (zuerst habe ich Tomcat/lib versucht, aber es hat auch nicht funktioniert).

3) Ich habe MyAppDeployed/WEB-INF/libs den VM-Optionen hinzugefügt, als ich Tomcat gestartet habe.

4) Mein -javaagent:C:\apache-tomcat-6.0.33\lib\aspectjweaver-1.6.1.jar :

%Vor%

Ich sehe keine Anzeichen dafür, dass das Laden-Zeit-Weben geschieht. Weder Fehlerberichte noch notwendige Ergebnisse. Die einzige Fehlermeldung, die ich habe, ist:

%Vor%

in einem Fall, wenn ich einen Fehler in einem aop.xml name mache, wenn ich einen javaagent-Parameter angegeben habe. Wenn es richtig geschrieben ist - keine Fehlermeldungen werden gedruckt.

Irgendwelche Ideen, was mache ich falsch?

P.S. Ich benutze Java 5, und ich habe die gleichen Dinge mit aspectjweaver-1.6.1.jar version des aspectj mit genau den gleichen Ergebnissen versucht.

    
Roman 05.04.2012, 16:09
quelle

2 Antworten

4

Wenn Sie das Load-Time-Weben verwenden möchten, können Sie Ihre Klassen wie üblich mit javac kompilieren und dann Ihre Aspekte mit (i) ajc kompilieren. Sie können dies mit einer Ameisenaufgabe wie unten tun

%Vor%

Es ist ausreichend, aspectjrt.jar während des Kompilierens im Klassenpfad ( "Hauptklassenpfad" ) zu haben.

Da alle meine Java-Klassen in $ {src.dir} enthalten sind, gebe ich eine Quellenliste für iajc. In der Quellenliste gibt es nur eine Zeile.

sources.lst

%Vor%

Ich habe einige Attribute der iajc-Aufgabe wie folgt festgelegt:

%Vor%

Wenn ich compile-aspect task ausführe, habe ich eine jar jar_file_name.jar Datei enthält

%Vor%

Und schließlich fügen Sie die Datei * jar_file_name.jar * dem Ordner WEB-INF / lib Ihrer Webanwendung hinzu.

Starten Sie dann Tomcat mit -javaagents: /path_to_aspectjweaver.jar wie zuvor.

Wenn ich die aop.xml (oder aop-ajc.xml) in META-INF direkt unter die WAR-Datei lege, funktioniert sie nicht. Auf diese Weise (ich meine aspect classes in a jar) funktioniert einfach gut für mich.

Hoffe, das hilft.

    
azizunsal 30.09.2012 22:39
quelle
4

Ich habe versucht, das gleiche Problem in Tomcat zu lösen. Zusätzlich zur Option -javaagent müssen Sie sicherstellen, dass sich die Datei aop.xml im Verzeichnis WEB-INF / classes / META-INF befindet. Das hat den Unterschied für mich gemacht.

    
Naresh Dhiman 12.11.2014 23:15
quelle