我试图了解在什么情况下在web.xml中需要使用async-supported
标记来进行与Jersey的异步servlet处理。如果我正在做任何异步工作,我通常把它放在那里。但为了说明,我已经设置了一个简单的服务
@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 :(得分:0)
web.xml中的async-supported
选项或等效的servlet注释@WebServlet(... asyncSupported=true)
用于指示在servlet级别上执行的潜在长时间后台工作应该在单独的线程中处理来自处理请求的人。处理请求的线程不会因此后台工作而被阻止,doGet()或doPost()方法返回,并且该线程可用于处理另一个请求。该任务将被放入队列中,并将由应用程序启动时启动的线程池中的线程处理。
这实际上与Jersey实现无关的Jersey AsyncResponse无关。您的Jersey REST服务不是servlet。