2011-09-28 87 views
1

如果我有一个长期运行的请求处理程序,用户点击浏览器的停止按钮,我该如何终止处理程序,以便它不会继续工作?我想一些简单的像提高基于从另一个线程看门狗(因为他们进来,谁给了连接),检查客户端连接状态的线程中断,但也许有更好的解决方案。如何停止/中断servlet处理程序?

回答

0

如果用户点击停止按钮你永远不会知道它除了作为连接复位。你没有任何机会提出线程中断:这意味着从浏览器到服务器中的另一个线程的另一个通信不会发生。

2

另一种更简单的方法是使该长时间运行的过程异步,使用ExecutorServicejava.util.concurrent。当联邦快递准备就绪时,立即返回并给予客户一种获得响应的方式。

的Servlet不应该执行的进程,同步或者非同步。他们的监听HTTP请求,绑定和验证输入参数,路由到适当的服务,以满足该请求,并编组到相应的视图的响应。

0

处理此问题的一种方法是分别实现long work/req/proc并将状态标志暴露给状态。选项。现在从你的servlet异步调用它。当客户端按STOP时,来servlet检查运行状态并在需要时中断并更新用户。