2012-05-12 17 views
1

HTTP控制器(Spring)獲取請求並進行阻塞調用。一旦阻塞呼叫結束,控制回到控制器。Tomcat或Jetty上的Spring web應用程序控制器內的基於事件的編程

此時我不想發送迴應給客戶端,而是等待另一個事件(例如,某些處理的完成)發生。只要發生此事件,我需要一種方法來收集事件中的數據,然後用此數據返回HTTP響應。

HTTPController doSomething(HTTPRequest) 
{ 
    makeBlockingCall(); 
    waitForEventToHappen(); 
    collectDataFromEvent(); 

    return HTTPResponse(); 

} 
+0

從標籤剝離的tomcat。關於這個問題沒有任何關於Tomcat的具體內容。就像其他Web容器一樣,解決方案將在tomcat中運行。 –

回答

0

你不會做,從一個請求中,因爲這可能會超時,最終在那之前將不提供反饋,有些事情是發生在客戶。

相反,您會立即顯示一個異步頁面(可能是每個AJAX)輪詢服務器以查看結果是否已經可用。

因此,第一個請求將返回將在第二個(AJAX)請求中用於查找結果的ID。

+0

事件發生得非常快(幾秒鐘內),所以超時不會成爲問題。 –

+0

@SoumyaSimanta,但幾秒鐘是同步處理很長一段時間。 –

相關問題