用于测量方法的执行时间,我见过的建议使用
public class PerformanceInterceptor {
@AroundInvoke
Object measureTime(InvocationContext ctx) throws Exception {
long beforeTime = System.currentTimeMillis();
Object obj = null;
try {
obj = ctx.proceed();
return obj;
}
finally {
time = System.currentTimeMillis() - beforeTime;
// Log time
}
}
然后把
@Interceptors(PerformanceInterceptor.class)
你想测量什么方法之前。
无论如何,我想这和它似乎很好地工作。
我还添加了
public static long countCalls = 0;
到PerformanceInterceptor类和
countCalls++;
到measureTime(),这也似乎工作确定
随着我牛逼的帽子,我会问,如果我使用countCalls的是okie是Glassfish的/ JEE6在用作拦截....特别是关于线程安全的Java类使用静态变量是确定和我在一起。 我知道,通常你应该在Java类变量的设置同步,但我不知道的情况是JEE6 / Glassfish的东西。 有什么想法吗 ?