2011-12-02 54 views
1

我有一個小的JSF Web應用程序在WAS7.0只有一個頁面,但相當大的用戶羣。JSF沒有會話超時。有什麼缺點?

我可以將所有(1)bean聲明爲請求範圍,並且還可以使用javax.faces.STATE_SAVING_METHOD客戶端,而不會在服務器上使用非過期會話運行內存問題?

這對大型應用程序會如何工作?

原因:我試圖在IBM處理我的PMR時快速解決WAS7.0中的問題。

編輯:在這一點上,我沒有資源來嘗試和自己衡量它,並將原樣離開應用程序(希望不要惹惱太多的用戶)。

+0

當然*有可能*。只是嘗試,測試,測量和結論。但究竟是什麼,你正試圖解決的問題?這個問題在其他方面過於寬泛和誇張。 – BalusC

+0

視圖到期行爲在WAS6.1和WAS7之間發生了變化。如果用戶將我的頁面打開(顯示頁面本身的單個請求的結果),並在會話過期後嘗試提交新請求,則他們將獲得ViewRestore異常頁面,而不是刷新頁面或處理請求。我在網上嘗試了幾種解決方案,但目前爲止還沒有解決方案我已經與IBM開了PMR,但通常需要花費數週時間。 – Stefan

+0

您也可以不時地輪詢或ping您的頁面。也許定期ajax請求,維護您的會話。 – gorlok

回答

3

您不一定需要更改bean的範圍。只要將bean保持在它們所屬的範圍內即可。只有當您濫用會話範圍的bean來保存請求或查看範圍內的數據時,故事確實會發生變化。請求或查看作用域數據屬於請求或查看作用域bean,而不是會話作用域bean。會話範圍的bean應僅用於保存會話範圍的數據,例如登錄用戶,其站點範圍首選項,所選語言等。

將狀態保存方法從服務器更改爲客戶端將肯定會修復其後臺會話已過期的視圖上的ViewExpiredException。它會減少服務器的內存使用量,但會增加服務器的網絡帶寬使用量。但是如果你已經在使用GZIP(或者還沒有使用GZIP,那麼也要打開它),那麼影響是非常小的。

+0

感謝作品的魅力。順便說一句,我不知道如何做我的工作,如果不是所有你的答案在stackoverflow和你的博客:D – Stefan

+0

不客氣:) – BalusC