Hallo!
Wir entwickeln eine Webanwednung mit Eclipse + JBoss + sehr vielen Projekten.
Nun wollen wir produktiv einige Sachen mitloggen.
Hierfür habe ich mir AspectJ angesehen und auch einiges hin bekommen.
Nun stehe ich aber vor einem kleinen Problem.
Zuerst einmal eine Frage ob das so richtig ist?:
Wir haben ein eigenes AspectJ-Projekt wo wir ein ein .aj-File haben wo alle Pointcuts und Advises drin sind.
Alle Projekte von unserer Anwendung welche geloggt werden sollen hab ich in AspectJ-Projekte umgewandelt und unter Projekt-Properties - AspectJ Build - Aspect Path füge ich das AspectJ-Projekt mittels Add Project ein.
Wenn ich dann das EAR erstelle funktioniert alles und es werden auch die Methoden die ich angegeben habe geloggt.
Nun die eigentliche Frage...wie kann ich auf private variablen einer Klasse zugreifen?
Hier ein kurzes Bespiel:
Projekt1:
Test.java
TestAspect.java
Projekt2:
World.aj
In Project1 gebe ich in Aspect Path das Project2 an.
Wie kann ich nun im den around-Advise auf die private Variable thePrivateVariable zugreifen?
Den Aspect (World.aj) wollen wir nicht in das selbe Projekt geben da wir ja genau ein Projekt haben wollen wo die Aspects drin sind und somit die anderen Projekte kaum ändern müssen.
Vielen Dank für die Hilfe!
mfg
Wir entwickeln eine Webanwednung mit Eclipse + JBoss + sehr vielen Projekten.
Nun wollen wir produktiv einige Sachen mitloggen.
Hierfür habe ich mir AspectJ angesehen und auch einiges hin bekommen.
Nun stehe ich aber vor einem kleinen Problem.
Zuerst einmal eine Frage ob das so richtig ist?:
Wir haben ein eigenes AspectJ-Projekt wo wir ein ein .aj-File haben wo alle Pointcuts und Advises drin sind.
Alle Projekte von unserer Anwendung welche geloggt werden sollen hab ich in AspectJ-Projekte umgewandelt und unter Projekt-Properties - AspectJ Build - Aspect Path füge ich das AspectJ-Projekt mittels Add Project ein.
Wenn ich dann das EAR erstelle funktioniert alles und es werden auch die Methoden die ich angegeben habe geloggt.
Nun die eigentliche Frage...wie kann ich auf private variablen einer Klasse zugreifen?
Hier ein kurzes Bespiel:
Projekt1:
Test.java
TestAspect.java
Code:
public class Test
{
private String thePrivateVariable = "1234";
public void testit(String msg)
{
System.out.println("Bin ein Test");
System.out.println(thePrivateVariable + " | " + msg);
}
}
Code:
public class TestAspect {
/**
* @param args
*/
public static void main(String[] args)
{
Test te = new Test();
te.testit("zahl");
}
Projekt2:
World.aj
Code:
public privileged aspect World {
pointcut testlog( String string) : ( execution( * testit(String)) && args(string));
Object around( String string ) : testlog( string)
{
Object result;
result = proceed(string);
System.out.println("Im Aspect | msp : " + string);
// Zugriff auf Test.thePrivateVariable ?
return result;
}
}
In Project1 gebe ich in Aspect Path das Project2 an.
Wie kann ich nun im den around-Advise auf die private Variable thePrivateVariable zugreifen?
Den Aspect (World.aj) wollen wir nicht in das selbe Projekt geben da wir ja genau ein Projekt haben wollen wo die Aspects drin sind und somit die anderen Projekte kaum ändern müssen.
Vielen Dank für die Hilfe!
mfg