如何停止/中断servlet处理程序?

时间:2011-09-28 00:18:28

标签: java servlets

如果我有一个长时间运行的请求处理程序,并且用户点击浏览器停止按钮,我该如何终止处理程序以使其无法继续工作?我正在考虑一些简单的事情,例如根据客户端连接状态提出一个线程中断,从另一个看门狗线程(他们进来后给出连接)检查,但也许有更好的解决方案。

3 个答案:

答案 0 :(得分:2)

另一种更简单的方法是使用ExecutorService中的java.util.concurrent使长时间运行的进程异步。立即返回,并给客户一个方法,以便在准备就绪时获得响应,联邦快递。

Servlet永远不应该执行进程,同步或异步。它们用于侦听HTTP请求,绑定和验证输入参数,路由到适当的服务以完成请求,以及将响应编组到适当的视图。

答案 1 :(得分:0)

如果用户点击“停止”按钮,除了连接重置之外,您将永远不会知道它。您没有机会提出线程中断:这意味着从浏览器到服务器中的另一个线程的另一个通信,这不会发生。

答案 2 :(得分:0)

处理此问题的一种方法是分别实现long work / req / proc并公开状态标志以提供状态。选项。现在从servlet async中调用它。当客户端按下STOP时,来servlet检查运行状态并在需要时中断并更新用户。