メソッドの実行時間を測定するために、使用する提案を見てきました
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()に
newbyの帽子をかぶった状態で、countCallsの使用が、Glassfish / JEE6がインターセプターとして使用されるJavaクラスの静的変数を使用しても問題ないかどうかを尋ねます。特に、スレッドセーフに関してです。通常、Javaでクラス変数の設定を同期することになっていることは知っていますが、JEE6/Glassfishの場合はどうなるかわかりません。何かご意見は ?