servlet 3.0异步流如何表现

时间:2013-12-09 06:39:51

标签: java servlet-3.0 asynchronous

我正在弄清楚异步servlet流如何异步运行。

如果有Servlet_1,我们从servlet调用实用程序类SampleUtility的util方法,并在util方法中进行某种操作后将一些值返回给servlet。

因此,对于异步流程,我们需要将asyncContext传递给util方法,或者只需通过语句启动asynccontext

 AsyncContext asyncContext = request.startAsync();

将足以使流程异步??

3 个答案:

答案 0 :(得分:1)

要使Servlet成为异步需要执行3个步骤

  1. 将Web servlet注释保存为

    @WebServlet(urlPatterns={“/servletexample”},aysncSupported=true)

    将其标记为asyncSupported true将使异步流能够。

  2. 通过以下语句启动AsyncContext

    AsyncContext ac=request.startAsync();

  3. 最后实施startAsync()

    asyncContext.start(new Runnable(){ public void run(){ //Write the non-blocking code here } }

答案 1 :(得分:0)

  

将足以使流程异步??

不,这还不够。要在servlet上启用异步处理,请在asyncSupported注释上将参数true设置为@WebServlet,如下所示:

  @WebServlet(urlPatterns={"/asyncservlet"}, asyncSupported=true)
  public class AsyncServlet extends HttpServlet { ... }

有关详情,请仔细阅读tutorial

答案 2 :(得分:0)

AsyncContext.forward(path)AsyncContext.forward()将请求转发回容器,以便您可以使用JSP之类的框架来生成响应。因此,您需要将asyncContext传递给方法,因为AsyncContext提供了获取ServletRequestServletResponse对象引用的方法。

相关问题