我创建了一个拦截器,其方法使用 @AroundInvoke 注释来记录方法调用和相关的计时。这是基于 Richard Hightowers 在 CDI AOP http://java.dzone.com/articles/cdi-aop上发表的优秀博客文章:
@AroundInvoke
public Object log(InvocationContext ctx) throws Exception {
Logger logger = Logger.getLogger(ctx.getTarget().getClass().getName());
logger.trace("ENTERING : "+ctx.getMethod());
long start = System.currentTimeMillis();
Object returnMe = ctx.proceed();
long executionTime = System.currentTimeMillis() - start;
logger.trace("EXITING : "+ctx.getMethod()+":"+executionTime+"ms");
return returnMe;
}
我想记录用户的会话 ID,以便我可以轻松地分析通过应用程序的用户路径。如何获取用户的会话?
我查看了注入 SessionContext 但看不到如何使用 API 来提取此值。
我查看了 log4j MDC,但我希望避免添加 servlet 过滤器的需要。