Java 3.0之前版本中的异步servlet解决方案?

Java 3.0之前版本中的异步servlet解决方案?,java,servlets,asynchronous,Java,Servlets,Asynchronous,我有一个长时间运行的任务(报告),它将在开始返回数据之前超过任何TCP连接超时。异步Servlet(在Servlet 3.0中引入)正是我所需要的,但是我仅限于Servlet v2.4。 有什么“自己动手”的解决方案吗?我所做的感觉像被黑客攻击了——我在线程中异步启动任务,然后立即返回到客户端。然后,客户机每隔几秒钟轮询一次(使用ajax),并检查此任务ID的“就绪”状态(静态列表维护它们的状态以及线程处理的对象的一些句柄)。准备好后,我将输出流注入工作对象,以便线程可以将结果写回客户端。您可以

我有一个长时间运行的任务(报告),它将在开始返回数据之前超过任何TCP连接超时。异步Servlet(在Servlet 3.0中引入)正是我所需要的,但是我仅限于Servlet v2.4。
有什么“自己动手”的解决方案吗?我所做的感觉像被黑客攻击了——我在线程中异步启动任务,然后立即返回到客户端。然后,客户机每隔几秒钟轮询一次(使用ajax),并检查此任务ID的“就绪”状态(静态列表维护它们的状态以及线程处理的对象的一些句柄)。准备好后,我将输出流注入工作对象,以便线程可以将结果写回客户端。

您可以实现反向ajax技术,这意味着不必多次轮询以获得响应,而是在任务完成后获得响应。
有一个快速的解决方案可以通过使用实现反向ajax技术。但是您应该保持静态列表的使用。如果您的后台任务业务逻辑很复杂,您可以使用ESB或更复杂的东西

您可以实现反向ajax技术,这意味着不必多次轮询以获得响应,而是在任务完成后获得响应。
有一个快速的解决方案可以通过使用实现反向ajax技术。但是您应该保持静态列表的使用。如果您的后台任务业务逻辑很复杂,您可以使用ESB或更复杂的东西

使用异步servlet只会将servlet线程返回到线程池。但是网络连接资源仍然被“消耗”,因为它一直保持打开状态,直到返回响应。异步servlet实际上就像拥有第二个servlet线程池,您可以有选择地将工作放入其中。使用异步servlet只会将servlet线程返回到线程池。但是网络连接资源仍然被“消耗”,因为它一直保持打开状态,直到返回响应。异步servlet实际上就像拥有第二个servlet线程池,您可以有选择地将工作放入其中。