Расчет времени выполнения запроса веб-службы

У меня есть рабочий веб-сервис SOAP, реализованный с помощью CXF на Java. Что было бы хорошим способом рассчитать выполнение метода на стороне сервера?

На данный момент я использовал перехватчики. Я определил public static long startв моем InInterceptor (Phase.RECEIVE ). И в моем OutInterceptor (Phase.SEND )я вычисляю время отклика следующим образом:

    @Override
    public void handleMessage(Message arg0) {
        long stop = System.currentTimeMillis();
        long executionTime = stop - RequestStartInterceptor.start;
        System.out.println("execution time was ~" + executionTime + " ms");
    }

Есть ли лучший способ сделать это? Я читал о выполнении метода через прокси, но понятия не имею, как это сделать.

Обновление вопроса:

Я немного больше погуглил, чтобы найти способ обойти второй способ с использованием прокси, т.е.:

@Aspect
public class MyServiceProfiler {



     @Pointcut("execution(* gov.noaa.nhc.*.*(..))")
         public void myServiceMethods() { }

         @Around("myServiceMethods()")
         public Object profile(ProceedingJoinPoint pjp) throws Throwable {
                 long start = System.currentTimeMillis();
                 System.out.println("Going to call the method.");
                 Object output = pjp.proceed();
                 System.out.println("Method execution completed.");
                 long elapsedTime = System.currentTimeMillis() - start;
                 System.out.println("Method execution time: " + elapsedTime + " milliseconds.");
                 return output;
         }
    }

Основываясь на комментариях к этому вопросу до сих пор, использование перехватчиков лучше, чем использование прокси. Я стремлюсь как можно меньше замедлить веб-сервис (, это, безусловно, замедлит его )и в то же время даст точное измерение производительности.

12
задан London 10 May 2012 в 09:11
поделиться