繁体   English   中英

Java EE请求范围和异步

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM