我有一个Spring MVC web应用程序,它连接到外部web服务以执行不同的操作。为了计算web请求的服务响应时间,我使用aspectj来记录服务调用。我可以完美地记录执行web服务方法所用的时间。
但是我也想在HTML视图中显示这些响应时间。我找不到一种方法将这个时间值返回到视图中。非常感谢你的想法。
下面是我如何使用sl4j将这些时间记录到CSV文件中。
@Around("execution(* backend.channel.ServiceWrapper.*(..))")
public Object logAroundServiceCall( ProceedingJoinPoint joinPoint ) throws Throwable
{
StopWatch sw = new StopWatch();
sw.start();
Object returnVal = null;
try
{
returnVal = joinPoint.proceed();
}
catch ( Exception e )
{
LOGGER.error( e.getMessage(), e );
}
finally
{
sw.stop();
SERVICE_TIME_LOGGER.info( "{},{}", joinPoint.getSignature().getName(), sw.getTotalTimeMillis() );
}
return returnVal;
}发布于 2016-01-15 10:48:55
有很多方法可以做到这一点,我给你两种可能性:
ThreadLocal变量。ThreadLocal变量是用于存储任意值的每线程存储方法。您的建议可以将分析结果列表存储在ThreadLocal中,并让代码在稍后的请求/响应周期中执行,该代码收集数据、清除ThreadLocal并在UI.AspectName.aspectOf()获取单例方面的实例,并将其用作几乎任何POJO来设置事件系统。https://stackoverflow.com/questions/34786035
复制相似问题