1

我已经使用 Apache Came 和 Apache CXF 以及“代码优先”方法部署了一个 Web 服务。它工作正常。

<cxf:cxfEndpoint id="operacionesWSEndpoint" address="/operaciones"
    serviceClass="foo.bar.OperacionesService">
</cxf:cxfEndpoint>

但我想衡量我的服务的性能并记录它。为此,我使用以下切入点使用 Spring AOP

@Pointcut("execution(* foo.bar.OperacionesService.*(..))")
public void operacionsMethods() {

}

@Around("operacionsMethods()")
public Object logTimeMethod(final ProceedingJoinPoint joinPoint) throws Throwable {

    StopWatch stopWatch =
            new StopWatch(joinPoint.getTarget().getClass().getSimpleName() + "."
                + joinPoint.getSignature().getName());
    stopWatch.start();

    Object retVal = joinPoint.proceed();

    stopWatch.stop();

    log.debug("performance: {}", stopWatch.shortSummary());

    return retVal;
}

嗯,不工作。其他方法和服务正在使用相同的方法 (AOP) 进行记录,但不是 Camel 公开的 Web 服务。

我认为我的代码没有任何错误:服务和其他方面一样有效。我觉得我在这里遗漏了一些关于 Apache Camel - CXF 和 Spring AOP 的东西,我没有发现类似的问题。

有任何想法吗?

4

1 回答 1

0

我还没有尝试过骆驼和 Spring AOP,但您可以使用骆驼拦截器作为替代方案。这不是你想要的安静。此外,对于测量,您可以使用metrics library中的“meter”和 Slf4jReporter 。

于 2013-09-30T13:45:44.260 回答