急于使Servlet调用长期运行的任务并向客户端更新进度

时间:2019-05-01 01:52:55

标签: java servlets

我耗时约5分钟,它会每秒输出结果,我想将进度显示给客户端浏览器。

这就是我的想法:

创建一个servlet,doPost方法将调用该函数并继续在后台运行,并在进度期间将输出写入会话。

servlet doGet方法将返回我保存在会话中的输出,并编写客户端JavaScript以每5秒获取一次输出,直到结束。

但是使用这种方法,对doPost的第一个请求将挂起客户端,因为servlet不会关闭连接。在调用任务之前,我尝试冲洗并关闭打印机,但是连接仍然打开。

尽管我可以在ajax中设置超时并让我的获取结果代码运行,但是我认为这是一种非常肮脏的方式。

也许我整个事情做错了。

总结:

我想要的是客户端请求可以触发任务运行,客户端将实时获取进度。

0 个答案:

没有答案