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

Java 在servlet中关闭http连接后执行作业,java,tomcat,servlets,Java,Tomcat,Servlets,我希望用户发表一篇文章,文章中的数据被处理,请求被转发到jsp页面。jsp页面被发送回用户,但是服务器应该完成一项工作。此作业需要很多时间,因此用户不应该等待它 protected void doPost(HttpServletRequest request, HttpServletResponse response) { //... get posted data ... request.getRequestDispatcher("/page.jsp").forward(request

我希望用户发表一篇文章,文章中的数据被处理,请求被转发到jsp页面。jsp页面被发送回用户,但是服务器应该完成一项工作。此作业需要很多时间,因此用户不应该等待它

protected void doPost(HttpServletRequest request, HttpServletResponse response) {
  //... get posted data ...
  request.getRequestDispatcher("/page.jsp").forward(request, response);
  //do-someting
}
我希望在连接关闭并且用户获得page.jsp之后完成“dosomething”。当然,“做点什么”完全是服务器端的,比如更新数据库等。因此,即使用户离开页面,服务器也会继续工作。在转发到jsp页面之后,我尝试刷新并关闭servlet中的outputstream,但这会导致异常。jsp页面中的刷新和关闭也会导致异常。如何执行此操作?

如果您的作业(做某事)完全独立于jsp中应显示的内容,则可以使用以下选项之一:

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