我正在JSF 2.0中開發一個應用程序,我想要一個多行文本框,它顯示正在從文件實時讀取(逐行)輸出數據。通過多線程AJAX實時交換數據
因此,我們的目標是讓一個頁面上有一個按鈕,觸發後端開始從文件中讀取數據,然後在文本框中讀取結果時顯示結果。
我曾想過通過以下方式這樣做:
擁有當地頁跟蹤哪些行已檢索/到目前爲止,在文本框中顯示。
定期地,本地頁面將使用AJAX輪詢後端並請求任何已讀取的新數據(告訴它到目前爲止該頁面有哪些行,並且從那時起只檢索新行)。
這將持續到整個文件被完全檢索。
問題是,從文件中讀取的bean方法正在運行一個while循環,它會阻塞。因此,要從它正在寫入的數據結構中讀取數據,將需要使用其他線程,更正嗎?我聽說在Web應用程序中產生新的線程是一個潛在的危險舉措,應該使用線程池等。
任何人都可以對此有所瞭解嗎?
更新:我嘗試了幾個不同的東西,沒有運氣。但我確實設法通過產生一個單獨的Thread
來運行我的阻塞循環,而主線程可以在處理AJAX請求時使用它來讀取它。有沒有一個好的庫可以用來做類似的事情,這仍然給JSF一些生命週期控制這個Thread
?
您是否針對具有EJB支持的Java EE 5或6容器? – BalusC 2011-06-17 20:26:02
我在沒有EJB支持的Tomcat服務器上部署這個...我希望我可以訪問@Asynchronous註釋,但是我沒有 – idolize 2011-06-17 21:48:31