在方法调用之后使用EJB拦截器

Gon*_*gui 10 interceptor ejb-3.0

我知道可以在方法调用之前使用@AroundInvoke注释来使用拦截器.

我想要做的是在方法调用之后执行某些代码,这样我就可以在方法执行之前和之后创建一个日志条目.

这可能是EJB3,还是我需要使用AOP?

Bre*_*ail 18

@AroundInvoke拦截器是通过InvocationContext传递的,必须调用proceed()来推进该方法.从而:

@AroundInvoke
public Object log(InvocationContext ic) throws Exception {
  logEntry();
  try {
    return ic.proceed();
  } finally {
    logExit();
  }
}
Run Code Online (Sandbox Code Playgroud)

根据您的需要,您还可以记录返回值或异常,过滤记录的方法等.