gpt4 book ai didi

Java Servlet : How to repeat an HTTP request?

转载 作者:太空宇宙 更新时间:2023-11-04 07:37:29 26 4
gpt4 key购买 nike

如果发生数据库死锁,我想自动重复 HTTP 请求;然而,FilterChain.doFilter()被定义为单向链(因此我无法重置其状态)。

在安全的情况下,是否可以重复 HTTP 请求而无需客户端重新提交请求

更新:我刚刚发现这种方法存在问题。即使重复请求,也需要缓冲该请求InputStream 。这意味着,如果用户上传 100MB 的数据,无论是否发生死锁,您都将被迫缓冲该数据。

我正在探索让客户在此处重复请求的想法:Is it appropriate to return HTTP 503 in response to a database deadlock?

最佳答案

回答我自己的问题:

不要尝试重复 HTTP 请求。为此,您将被迫缓冲 InputStream对于所有请求,即使从未发生死锁。如果您被迫接受大量上传,这将使您面临拒绝服务攻击。

我推荐这种方法:Is it appropriate to return HTTP 503 in response to a database deadlock?

然后,您可以将大型上传分解为使用 AJAX 拼接在一起的多个请求。不太漂亮,但它有效,总的来说,你的设计应该更容易实现。

更新:根据 Brett Wooldridge :

You want a small pool of a few dozen connections at most, and you want the rest of the application threads blocked on the pool awaiting connections.

正如 Hikari 建议使用少量线程和较长的请求队列一样,我相信这对于 Web 服务器也是如此。通过限制 Activity 线程的数量,我们限制了需要缓冲的输入流的数量(剩余的请求在发送 HTTP 正文之前被阻止)。

为了进一步强调这一点,Craig Ringer建议尽可能从服务器端的故障中恢复。

关于Java Servlet : How to repeat an HTTP request?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16620003/

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