AspectJ - Warum wurde der in XYZ definierte Hinweis nicht angewendet?

8

Ich habe gerade angefangen mit AspectJ (1.6.11) zu spielen. Ich sende E-Mails über die Commons-E-Mail-Bibliothek und ich möchte wissen, wie lange es dauert, eine Nachricht zu senden. Also das ist mein E-Mail Sendecode:

%Vor%

und das ist mein Aspekt: ​​

%Vor%

Allerdings, wenn ich es kompiliere mit:

%Vor%

Ich bekomme folgende Warnung:

%Vor%

Und natürlich funktioniert der Aspekt nicht. Ich probierte vorher () / nach () Ratschläge, verschiedene Muster in Call (), aber es endete mit der gleichen Warnung.

Ich debuggte das Programm in Eclipse (mit Commons-E-Mail-Quellen) und ich weiß, dass Transport.send () ausgeführt wird.

Was ist das Problem?

Danke.

AKTUALISIEREN

Also habe ich gerade herausgefunden, dass ich den Quellcode von javax.mail.Transport für die Methode des Webens brauche, die ich benutzt habe (Quellweben). Also habe ich das binäre Weben benutzt und es hat funktioniert. Aber ich habe meine Meinung geändert und möchte jetzt die Zeit von java.net.Socket.connect (..) messen (org.apache.commons.mail.Email.send (..) ruft javax.mail.Transport.send (. .), die java.net.Socket.connect (..) aufruft, verifizierte ich es durch Debugging in Eclipse). Aber ich möchte nicht das gesamte JDK in meinen kompilierten Code aufnehmen. Also habe ich das Load-Time Weben versucht. Dies ist mein modifizierter Aspekt: ​​

%Vor%

Und diese Schritte habe ich gemacht, um & amp; Programm ausführen:

%Vor%

Aber es funktioniert nicht: (.

    
batto 06.06.2011, 14:58
quelle

2 Antworten

2

Also habe ich gerade das Problem mit dem Laden der Ladezeit aufgeworfen. Ich habe aop.xml in:

geändert %Vor%

Ich habe hier eine Antwort gefunden Ссылка (und auch AspectJ Runtime berichtete, dass ich brauche zu liefern -Xset: weaveJavaxPackages = wahre Option die ganze Zeit, ich war einfach zu dumm: ().

    
batto 07.06.2011, 14:54
quelle
0

Eine kurze Überprüfung der Apache-Dokumentation scheint zu zeigen, dass weder E-Mail noch SimpleEmail Instanzen von Transport sind. Vielleicht möchten Sie den Pointcut zu:

ändern

pointcut conn (): call (* SimpleEmail.send (..));

    
anjosc 07.06.2011 11:20
quelle

Tags und Links