gpt4 book ai didi

Java EE 请求范围和异步

转载 作者:行者123 更新时间:2023-11-30 07:35:34 26 4
gpt4 key购买 nike

我正在尝试使用拦截器来计时日志性能。

@LogPerformance
@Interceptor
public class PerformanceInterceptor {

时间存储在请求范围的 bean 中。当请求完成时,时间将写入日志文件。

当我将几个记录的方法更改为异步时,这些操作的日志记录停止输出。

 @Asynchronous
@LogPerformance
public Future<String> getString() {

我相信新的 EJB 线程正在定义新的请求范围。我可以记录拦截器的输出并查看请求范围的对象,但这些对象附加了两个不同的地址。一个地址用于 http 线程,另一个地址用于 EJB 线程。

有没有办法允许异步方法中的拦截器写入http请求范围内的对象?还有其他方法可以将数据返回到父范围吗?

最佳答案

容器将传播 javax.ejb.EJBContext到执行异步方法的线程。

您可以将此 EJBContext 注入(inject)到您的拦截器中,并通过 javax.ejb.EJBContext.getContextData() 将您想要的任何状态(例如您的请求作用域 bean)存储到其中。 .

关于Java EE 请求范围和异步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35442085/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com