gpt4 book ai didi

java - HttpServletRequest 对象的字段在延迟时被截断。为什么?

转载 作者:可可西里 更新时间:2023-11-01 16:30:27 24 4
gpt4 key购买 nike

我有一个 Spring 应用程序,其中一个 Controller 接收到 HttpServletRequest 的对象。然后我必须将该对象的一些 header 信息记录到数据库中,为此我启动了一个线程。然后我将这个 HttpServletRequest 对象传递到线程中,并尝试通过 request.getHeader(HttpHeaders.USER_AGENT) 等方法访问字段。这运行良好,但是当我调试并在此访问之前放置一个断点时,我在所有这些 header 中都得到了空值。此外,只要线程运行迟到, header 值就会变为空值。一种可能的解释是,经过一定时间后,容器释放内存。但为什么以及如何?有时间限制吗?

最佳答案

HttpServletRequestHttpServletResponse 类的实例不得在 servlet 服务方法之外使用。 Servlet 容器可以(并且确实)在调用 servlet 方法时重用相同的请求/响应对象,方法是更改​​这些对象的内部状态以对应当前的 http 请求。

如果您有生成响应的后台任务,那么您需要查看 async servlet processing .

如果您的后台任务只需要来自请求的一些数据,但立即生成响应,那么您需要将请求中所需的所有信息复制到某个其他对象中,然后将该对象传递到您的后台任务中。

关于java - HttpServletRequest 对象的字段在延迟时被截断。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22933083/

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