gpt4 book ai didi

java - 处理请求时 Tomcat session 超时

转载 作者:行者123 更新时间:2023-11-28 22:55:07 24 4
gpt4 key购买 nike

我遇到这样一种情况,即保持 session.setMaxInactiveInterval(15*60)//15 分钟

一切正常

现在,应用程序中有一个保存用户数量的请求,这在服务器端需要超过 15 分钟,因为在保存每个用户时内部涉及许多操作。

当从浏览器执行 saveUser 操作时,服务器收到请求,开始处理,15 分钟后客户端看到“ session 超时”,但用户保存操作仍在继续。

我想避免这种情况,需要的是从服务器收到请求到它响应客户端的时间不要将中间时间视为非 Activity 时间。

我可以通过将 setMaxInactiveInterval(-1) 作为我的方法 saveUser 的第一行并在以 setMaxInactiveInterval(15*60) 给出响应之前很好地做到这一点。

我正在寻找标准方法或者这是要遵循的标准方法?是否为这种情况提供了任何内置的 Tomcat 配置?

最佳答案

为此,标准的 Java EE 方法如下:

  • 与其在网络层进行所有处理,不如将所有详细信息放在 JMS 队列中并立即返回请求。
  • 数据将由工作人员从 JMS 队列中取出(可能在不同的服务器上,因为您不希望在 web 层上承担创建内容 15 分钟的负载)
  • 一旦为用户创建了数据,就会生成一个通知(例如,浏览器可以每 30 秒查询一次用户生成是否已完成)。

注意在服务器中阻塞一个线程 15 分钟是一个非常糟糕的主意,因为从本质上讲,这意味着您的 servlet 容器将无法对该线程执行任何其他操作。想象一下,如果大量这些请求同时传入,您的 Web 层可能会在压力下崩溃......

注意 2:15*50 不等于 15 分钟

关于java - 处理请求时 Tomcat session 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29295514/

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