code: @Override
  	public Object invoke(MethodInvocation invocation) throws Throwable {
  		// cette méthode est appelée par spring aop
  		if (DISABLED || !SPRING_COUNTER.isDisplayed()) {
  			return invocation.proceed();
  		}
  		// nom identifiant la requête
  		final String requestName = getRequestName(invocation);
  
  		boolean systemError = false;
  		try {
  			SPRING_COUNTER.bindContextIncludingCpu(requestName);
  			return invocation.proceed();
  		} catch (final Error e) {
  			// on catche Error pour avoir les erreurs systèmes
  			// mais pas Exception qui sont fonctionnelles en général
  			systemError = true;
  			throw e;
  		} finally {
  			// on enregistre la requête dans les statistiques
  			SPRING_COUNTER.addRequestForCurrentContext(systemError);
  		}
  	}
docs: Performs method invocation.
  
  @param invocation method invocation
  @return return object from the method
  @throws Throwable anything thrown by the method