java - 在 servlet 中关闭 http 连接后执行作业

标签 java tomcat servlets

我希望用户发帖,处理帖子中的数据并将请求转发到 jsp 页面。 jsp 页面被发送回用户,然后服务器应该完成一项工作。这项工作需要花费大量时间,因此用户不应等待。

protected void doPost(HttpServletRequest request, HttpServletResponse response) {
  //... get posted data ...
  request.getRequestDispatcher("/page.jsp").forward(request, response);
  //do-someting
}

我希望在连接关闭并且用户获得 page.jsp 后完成“做某事”。当然,“做某事”完全是服务器端的,比如更新数据库等。所以即使在用户离开页面后,服务器也会继续工作。在转发到 jsp 页面后,我试图刷新并关闭 servlet 中的输出流,但这会导致异常。 jsp 页面中的刷新和关闭也会导致异常。我该怎么做?

最佳答案

如果您的工作(做某事)完全独立于应该在 jsp 中显示的内容,那么您可以使用以下之一:

  • 计时器
  • 一个线程(在线程池中)
  • 一个更强大的库,如 Quartz这将为您提供强大的调度功能

关于java - 在 servlet 中关闭 http 连接后执行作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12414811/

相关文章:

java - 使用文件 IO 并使数据以清晰的方式显示

java - EclipseLink Profiler 显示正在创建的多个注册对象

java - 将字符串与字符串值进行比较

java - Obsidian Scheduler 为实现作业设置问题

java - Servlet url 映射

Java Maven exec-maven-plugin 带有限定名称的 ClassNotFoundException

java - 在 spring web 应用程序中创建数据源的正确方法是什么?

java - 通过 Tomcat 进行 SQL Server Windows 身份验证

java - 写入 Excel 文件模板不遵循定义的单元格数据格式

java - 使用 Netty 实现 Servlet API