2015-06-22 40 views
1

因爲我們知道struts攔截器執行和等待將照顧長時間運行的過程,通過沒有得到請求超時並摧毀它發送等待,最後我希望實現相同的長期運行過程在春季和冬眠。春季hibernate如何實現長時間運行的過程?

+0

Struts只是簡化了web應用程序的開發。你在這裏尋找的是如何開始一個異步任務,這對於struts而言是完全不相關的**。我建議你看看[本指南](http://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html)。 –

回答

1

我建議你使用Spring的DeferredResult。這是一個未來的實現,它使用http long poling技術。

http://docs.spring.io/spring-framework/docs/3.2.0.BUILD-SNAPSHOT/api/org/springframework/web/context/request/async/DeferredResult.html

所以let's說,你會做一個請求,服務器就會返回你的deferredResult,然後你的請求將保持打開狀態,直到內部處理(休眠)完成他的任務。超時時間在構造函數中是可配置的。

這裏另一個例子http://www.javacodegeeks.com/2013/03/deferredresult-asynchronous-processing-in-spring-mvc.html

0

爲了保持會話在請求的整個生命週期中保持開放,我們將它與視圖綁定。這是通過使用Spring的OpenSessionInViewInterceptorOpenSessionInViewFilterOpenSessionInViewFilter

在視圖過濾器中的打開會話將確保Hibernate會話始終保持打開直到視圖的呈現。

或者

可以在後端使用任務隊列爲長時間運行的過程是怎樣的this

工作隊列(又名:任務隊列)是爲了避免立即執行資源密集型任務,必須等待它完成。相反,這些任務計劃在稍後完成。任務被封裝爲消息併發送到隊列。在後臺運行的工作進程將彈出任務並最終執行作業。當你運行許多工人時,任務將在他們之間共享。

這個概念在web應用程序中特別有用,在短的HTTP請求窗口中無法處理複雜的任務。

相關問題