01 package trail.interceptor;
02
03 import javax.ejb.*;
04 import javax.interceptor.*;
05
06
07 public class Tracer {
08
09 @AroundInvoke
10 public Object log (InvocationContext ctx)
11 throws Exception {
12
13 InterceptorCalculator cal = (InterceptorCalculator) ctx.getTarget();
14 String className = ctx.getTarget().getClass().getName();
15 String methodName = ctx.getMethod().getName();
16 String target = className + "." + methodName + "()";
17
18 long start = System.currentTimeMillis();
19 System.out.println ("Invoking " + target);
20 cal.setTrace(cal.getTrace() + "<br/>" +
21 "Invoking " + target);
22 try {
23 return ctx.proceed();
24 } catch(Exception e) {
25 throw e;
26 } finally {
27 System.out.println("Exiting " + target);
28 cal.setTrace(cal.getTrace() + "<br/>" +
29 "Exiting " + target);
30 long time = System.currentTimeMillis() - start;
31 System.out.println("This method takes " +
32 time + "ms to execute");
33 cal.setTrace(cal.getTrace() + "<br/>" +
34 "This method takes " +
35 time + "ms to execute");
36 }
37 }
38
39 }
|