[英]Java EE Request scope and Asynchronous
我正在尝试使用拦截器计时日志性能。
@LogPerformance
@Interceptor
public class PerformanceInterceptor {
时间存储在请求范围的Bean中。 请求完成后,时间将写入日志文件。
当我将几种记录的方法更改为异步方法时,这些操作的记录停止输出。
@Asynchronous
@LogPerformance
public Future<String> getString() {
我相信新的EJB线程正在定义新的请求范围。 我可以记录拦截器的输出,并查看请求范围内的对象,但是对象有两个不同的地址。 http线程一个地址,EJB线程另一个地址。
有没有办法允许异步方法的拦截器写入http请求范围内的对象? 还有另一种方法可以将数据返回父范围吗?
容器会将javax.ejb.EJBContext传播到执行异步方法的线程。
您可以将此EJBContext注入到拦截器中,并通过javax.ejb.EJBContext.getContextData()将所需的任何状态(例如,请求范围的bean)存储到其中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.