2014-11-05 87 views
3

我想了解在什么情况下async-supported标记需要在web.xml中与泽西异步servlet处理。如果我正在做异步工作,我通常会把它放在那里。但要说明,我已经安装了一个简单的服务队servlet 3.0异步支持与运动衫

@GET 
@Produces(MediaType.APPLICATION_JSON) 
public void myService(@Suspended AsyncResponse response) { 
    new Thread(new Runnable() { 
     @Override 
     public void run() {    
      response.resume(someResponseObject); 
     } 
    }).start(); 
} 

在这种情况下,如果我不把async-supported我的web.xml中,能正常工作。

这是不是异步工作,因为我认为或有一些具体的操作,我需要做之前启用async-supported是必需的?

回答

0

web.xml中的async-supported选项或等效的servlet注释@WebServlet(... asyncSupported=true)用于在servlet级别指示执行潜在的长时间运行的后台工作,应在与正在处理请求。处理请求的线程在此后台工作中不会被阻止,doGet()或doPost()方法返回并且该线程可用于处理另一个请求。该任务将被放入一个队列中,并将由应用程序启动时启动的线程池中的线程处理。

这实际上与泽西岛实施方式处理的Jersey AsyncResponse无关。您的Jersey REST服务不是一个servlet。