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