2011-06-10 203 views
3

我有一個長時間運行的服務方法(做業務邏輯),我希望客戶端在向Controller提交請求後立即返回。我希望客戶端定期輪詢以查看Service方法是否已完成執行。 閱讀這兩個鏈接後: link1 link2 我相信,@Async是我的情況的正確方法。我的問題是,Service方法或Controller方法應該有哪些註釋。 Controller方法如何引用Future對象,以便它可以調用其get()isDone()方法。Spring MVC和@Async

回答

11

將@Async放在調用「真實」服務方法的服務方法上。這樣,你有兩種方法來調用它,異步和非異步。

有控制器方法存儲服務在Session中返回的Future然後返回。然後,當客戶端輪詢控制器(使用不同的URL /方法)時,控制器可以將Future從會話中取出並調用isDone()。

+0

謝謝一堆。這對我來說算得很好。 – pushNpop 2011-06-11 14:29:39

+0

你如何正確處理'未來'不可序列化? – 2015-10-29 15:02:15