为了测量方法的执行时间,我看到了使用建议
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,Glassfish/JEE6 是否可以在用作拦截器的 Java 类中使用静态变量……特别是在线程安全方面。我知道通常你应该在 Java 中同步类变量的设置,但我不知道 JEE6/Glassfish 的情况如何。有什么想法吗 ?