没有客户端请求的jsp通信servlet

时间:2015-03-05 14:13:55

标签: java jsp tomcat servlets

我正在开发一个项目,我们使用Tomcat 8作为应用程序服务器,因此使用JSP和Servlets。每个JSP都显示一种项目列表。应用程序的用户可以模拟项目。这意味着什么并不重要。当用户单击“模拟”按钮时,将执行以下过程:

  1. 通过Ajax(javascript)将执行一个servlet,它生成一个zip文件并将该文件存储在服务器的硬盘上
  2. 将在相应项目的数据库中设置'simulation'-flag
  3. 外部java程序(在后端)侦听'simulation'标志,如果设置了项目标志,外部程序将抓取Web应用程序存储的zip文件
  4. 外部java程序然后运行该项目的模拟。
  5. 模拟完成后,外部java程序在服务器的硬盘上存储一个新的zip文件,在数据库中设置'嘿,我准备'标志并调用Web应用程序的servlet < / LI>
  6. 此servlet将新zip文件中的数据信息保存到数据库
  7. 光洁度
  8. 所以我的问题是:通知JSP模拟完成的最佳方法是什么? JSP仍然显示项目处于模拟进度中。我目前的想法如下:

    我可以定期向服务器发送一个Ajax请求来检查数据库中是否有'嘿我已准备好'标志,如果设置了,我可以在JSP上显示结果。但我觉得有更聪明的解决方案。

    也许我可以使用最后一个servlet调用(参见第5点)以某种方式告知JSP模拟已完成?问题是这个servlet不是由客户端调用,而是由外部java程序调用。

    你有什么建议吗?或者我应该阅读哪些技术?

    谢谢。

1 个答案:

答案 0 :(得分:0)

使用异步ajax调用意味着当servlet完成它的工作并返回一些HTTP代码(成功为200)时,该函数将返回。

所以这个例子:

$.ajax({
                    url: Config.serverUrl+'/simulationServlet',
                    type: 'GET',

                    success: function(result) {
                           $('#infoBox').text("simulation is over");
                       }
                });

将显示模拟已完成。