我有一个长时间运行的任务(报告),它会在开始返回数据之前超过任何TCP连接超时。异步servlet(在Servlets 3.0中引入)正是我所需要的,但是我仅限于Servlet v2.4。 有没有“自己动手”的解决方案?我正在做的事情感觉被黑了 - 我在一个线程中异步启动任务,然后立即返回客户端。然后客户端每隔几秒轮询一次(使用ajax),并检查此任务ID的“就绪”状态(静态列表保持其状态以及线程处理的对象的一些句柄)。准备好之后,我将输出流注入工作对象,以便线程可以将结果写回客户端。
答案 0 :(得分:1)
您可以实现Reverse ajax技术,这意味着一旦任务完成,您将获得响应,而不是多次轮询以获得响应。 通过使用DWR here,可以快速实现reverse-ajax技术。但是你应该保持使用静态List。如果您的后台任务业务逻辑很复杂,您可以使用ESB或更复杂的东西。