방법의 실행 시간을 측정을 측정하기 위해, 내가 본 제안 글래스 피시 - JEE6 - 인터셉터의 사용은 성능
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)
를 넣어 사용합니다.
어쨌든 나는 이것을 시도하고 잘 작동하는 것 같습니다.
나는 또한 PerformanceInterceptor 클래스에
public static long countCalls = 0;
도 오케이 일 것 같습니다 measureTime()에
countCalls++;
추가
내 newby 모자를 쓰고, countCalls의 사용이 o.k인지 묻습니다. Glassfish/JEE6이 o.k 인 입니다. 저와 함께 Java 클래스의 정적 변수 인 이 인터셉터로 사용되었습니다. 특히 스레드 안전과 관련하여. 나는 보통 Java에서 클래스 변수의 설정을 동기화한다고 가정하고 있지만, JEE6/Glassfish와 어떤 관련이 있는지 알지 못합니다. 이견있는 사람 ?
감사! 매우 명확한 대답 – user1501183