2014-07-09 76 views
0

我有一個看起來像這樣的資源的方法:如何在Dropwizard中使用Servlet 3.0異步方法?

@Path("hard") 
@GET 
public Response sayHello2(@Context HttpServletRequest request) 
     throws InterruptedException { 
    AsyncContext ac = request.startAsync(); 
    Thread.sleep(1000); 
    ac.complete(); 

    return Response.ok("hello world hard").build(); 
} 

它看起來像代碼貫穿而過,但我似乎無法驗證異步工作在這種情況下?我正確使用這個嗎?

回答

0

我沒有dropwizard的經驗,但在異步servlet中,您不應該用線程休眠來阻塞servlet線程。在調用request.startAsync()之後,可以在servlet中使用ExecutorService將工作委託給另一個線程。您應該將異步上下文傳遞給工作線程,並在完成時調用ac.complete()。