繁体   English   中英

将HttpServletRequest对象存储在队列中以便以后处理是危险的吗?

[英]Is it dangerous to store HttpServletRequest objects in a queue for later processing?

所以,我处在一种情况,我想排队一堆HttpServletRequest对象进行异步处理。 暂时搁置这是否是一个明智的策略 - 实际上就是在这种情况下,因为我正在尝试改造一个糟糕的遗留系统 - 这是一件危险的事情吗?

我在这里关心的是HttpServletRequest对象是否保留任何有价值的资源或打开连接会导致死锁或资源争用问题。

这里假设我正在实现一个带有doPost()方法的简单servlet,该方法接受HttpServletRequest对象,将其放入LinkedBlockingQueue,然后向用户发送某种股票响应(如301重定向到确认页面)。

谢谢!

我已经看到了码头的内部,我可以向你保证,将这个结构从当前的请求中移出会非常非常糟糕。 有各种当前连接状态,不能在当前请求之外使用。 我不禁想到,几乎任何servlet容器都是如此。

听起来您正计划响应原始请求,然后进行一些额外的处理。 我建议将原始请求中所需的信息复制到单独的数据结构中以进行离线处理。 此外,如果您正在处理需要HttpServeletRequest的代码,您始终可以使用代码所需的数据位来模拟您自己的代码。

我做了一个非常相似的事情,我遇到的一个问题是,Jetty似乎在某些时候清理了HttpServletRequest中的内容,让你从某些getXYZ方法中获得null返回值,甚至为其他人抛出NPE。

所以,是的,这很危险。

我现在在doPostdoGet复制我需要的东西,完全忘记了这个实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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