我正在弄清楚异步servlet流如何异步运行。
如果有Servlet_1,我们从servlet调用实用程序类SampleUtility的util方法,并在util方法中进行某种操作后将一些值返回给servlet。
因此,对于异步流程,我们需要将asyncContext传递给util方法,或者只需通过语句启动asynccontext
AsyncContext asyncContext = request.startAsync();
将足以使流程异步??
答案 0 :(得分:1)
要使Servlet成为异步需要执行3个步骤。
将Web servlet注释保存为
@WebServlet(urlPatterns={“/servletexample”},aysncSupported=true)
将其标记为asyncSupported true将使异步流能够。
通过以下语句启动AsyncContext
AsyncContext ac=request.startAsync();
最后实施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
提供了获取ServletRequest
和ServletResponse
对象引用的方法。