具有异步调用的RequestScoped日志bean



我有一个日志bean,我记录数据库调用和bean方法调用通过拦截器需要多长时间。

我有一个调用两个@Asynchronous方法的bean。这两个@Asynchronous方法调用数据库并被拦截。

当日志bean记录日志时,似乎数据库占用了0 ms,这是不正确的。当我使用这个日志bean和所有没有@异步调用的拦截器时,一切都很好。

我使用的是glassfish 3.1.2.2。文档http://glassfish.java.net/nonav/docs/v3/api/javax/enterprise/context/RequestScoped.html说"请求上下文被销毁:在异步观察者通知完成后",这是否意味着@Asynchronous方法中的日志bean实例在该方法完成时被销毁?我可以用什么来实现我的目标?

有多个图层:

    一个CDI代理,运行CDI拦截器,然后调用EJB。
  1. EJB代理,调度异步工作并立即返回。
  2. EJB拦截器,运行在异步线程上。
假设您正在使用CDI拦截器,它测量EJB容器调度异步工作所需的时间。如果您转而使用EJB拦截器(例如,用@Interceptors注释EJB方法),那么您可以测量执行工作所花费的时间。

最新更新