Tracer.java
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 = (InterceptorCalculatorctx.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 }