在java servlets中停止doGet / dopost?

时间:2010-03-14 23:29:00

标签: java ajax servlets persistence

我一直在玩Java Servlets和Ajax,我有 在这种情况下,我真的很感激建议。

假设我有一个带有开始和停止按钮的HTML页面,并且由于点击了开始按钮,所以 调用servlet上的重写的doGet(或doPost)方法,该方法计算需要很长时间才能完成的事情。 (例如一个巨大的循环,甚至无限循环,无所谓,我对这里的概念很感兴趣。)

所以,我问你:

1.我可以选择杀死/关闭/停止/退出 doGet方法我在网页上点击停止按钮? 我在这里使用线程,还是有更简单的方法? 我认为使用System退出并不是一个好主意,对吧? ;)

2.所以,假设我实现了停止doGet方法的代码。 会发生什么如果我在一个浏览器(例如,IE)上启动,并且这很长 计算发生打开新选项卡或其他浏览器(例如Firefox)并打开相同的URL 然后停止?这会阻止我原来的计算吗?有没有简单的方法来避免这种情况?

我知道问题有点过时,因为我只是从服务器端开始。 :)

任何建议都将不胜感激!

2 个答案:

答案 0 :(得分:2)

你的停止处理程序可以在会话上下文中设置一个标志,如果需要,长时间运行的线程偶尔会检查并退出。

通过在每次加载页面时生成唯一的任务ID,可以避免多个浏览器问题。那么你只能启动或停止一个特定的任务。这个id可以是会话中的关键。

答案 1 :(得分:0)

我认为您需要在提交请求后启动某种新流程,此流程应在运行时回答响应(例如通过AJAX显示进度)。此外,它应检查是否有带停止命令的新请求。页面应该是带有进度/结果/停止按钮的AJAX。