java - How to attach a pointcut to a to a method of class residing inside a .jar file using command line? -
i new aop . have created class in hookshow.java file:
public class hookshow { void show(string msg) { system.out.println("in show :"+msg); } public static void main(string[] args) { hookshow cm=new hookshow(); cm.show("called main method"); } }
then compiled , added generated .class file .jar file using :
jar cf hshow.jar hookshow.class
now have hshow.jar. creating aspect has pointcut executed on call of show()
. dont have idea how can reffer class , method inside jar file. following aspect file:
public aspect aspecthookshow { pointcut changemsgpointcut( string str) :execution(void hookshow.show(string)) && args(str); before(string str ) : changemsgpointcut( str) { system.out.println("inside pointcut :"+str); } }
so please can tell me how can reffer method inside class in jar file.
after research of 3 hours found 3 ways achive mentioned above, thing had not change code , needed execute commands on cmd prompt :
first way:
i got 1 way oreilly aspectj cookbook :
steps: 1:compile hookshow class using traditional javac command:
javac hookshow.java
2:package generated hookshow.class file .jar file titled myapp.jar:
jar -cvf myapp.jar hookshow.class
3:compile aspecthookshow.java aspect using ajc command, specifying new myapp.jar on command line using -inpath option:
> ajc -inpath myapp.jar aspecthookshow.java
the -inpath option forces ajc compiler extract java byte code supplied .jar files destination directory specified -d option. ajc compiler includes extracted byte code in aspect weaving process.
4:if no errors occur during compilation ajc have woven classes contained within myapp.jar file aspecthookshow aspect. because ajc command extracts classes .jar files supplied -inpath option, no longer needed run application. however, can optionally re-package new application in .jar file of own using -outjar option when running ajc command:
> ajc -inpath myapp.jar -outjar myaspectorientedapp.jar aspecthookshow.java
this produces myaspectorientedapp.jar contains application's aspects , classes can run using traditional java command:
> java -classpath myaspectorientedapp.jar hookshow
second way:
execute following command:
>ajc -janars aspectjrt.jar ;hshow.jar aspecthookshow.java -outjar final.jar
this create final.jar. put jar in classpath , m able use in class.
hope useful else me.
Comments
Post a Comment