gpt4 book ai didi

java - 在子线程中访问 HttpServletRequest 请求

转载 作者:太空宇宙 更新时间:2023-11-04 14:31:50 25 4
gpt4 key购买 nike

我有一个 Web 应用程序,其中我使用 ScheduledThreadPoolExecutor 来安排一些稍后执行的逻辑(可能在原始 Web 请求结束后)。是否可以在子线程内访问/使用原始请求的 HttpServletRequest(通过 ScheduledThreadPoolExecutor 上的“schedule”调用创建)?

我尝试在其函数在子线程中运行的类中 Autowiring HttpServletRequest,但出现以下错误(我了解原因)

java.lang.IllegalStateException: No thread-bound request found: Are 
you referring to request attributes outside of an actual web request,
or processing a request outside of the originally receiving thread? If
you are actually operating within a web request and still receive this
message, your code is probably running outside of
DispatcherServlet/DispatcherPortlet: In this case, use
RequestContextListener or RequestContextFilter to expose the current
request.

有什么可行的办法吗?可以RequestContextFilter可能会被使用吗?

最佳答案

似乎您想要完成的任务是让 HTTP 连接保持打开状态,同时在单独的线程中异步处理请求?

在这种情况下,您可能想看看 Spring MVC 中的 DeferedResult 支持 - http://docs.spring.io/spring/docs/3.2.x/javadoc-api/org/springframework/web/context/request/async/DeferredResult.html - 也在这里解释 - http://java.dzone.com/articles/long-polling-spring-32s

关于java - 在子线程中访问 HttpServletRequest 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26053367/

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