2010-09-03 52 views
1

今天在工作中,我和我的同事和老闆討論了無狀態/有狀態bean(我們剛剛使用JSF完成了一個項目,這是該公司第一次與JSF相關的人),我的老闆說他並不喜歡Session範圍的bean(甚至不包括對話/ KeepAlive範圍的bean)。他的一個論據是,如果我們有例如4 Tomcats,並且有用戶的請求,那麼我們不確定它會每次被同一個Tomcat「捕獲」,問題是如果在第一次發出請求並創建一個會話bean時,它僅在該Tomcat上創建,其他人則不知道。Terracotta是專業使用的嗎?

他提到的一個解決方案是所謂的「粘性會話」,它強制每個給定用戶的請求由同一個Tomcat處理。根據他的第二個解決方案是將所有數據存儲在「視圖」中,但這意味着將整個狀態存儲在POST中,但我不太確定這種想法。然後他提到將狀態存儲在數據庫中,並詢問是否有需要的請求到達。我認爲這將是一個非常巨大的表現,但他表示這真的不會成爲一個問題,因爲數據庫應該爲這些任務做好準備。

我感興趣的最後一個解決方案是Terracotta服務器,他告訴我們,它應該存儲所有Tomcats的會話bean(與它同步,然後如果有請求進來,用於Terracotta裏面的會話bean)。看起來有點酷,可擴展,但他說他並沒有真正看到它在大型專業系統中使用過,對嗎?我嘗試了一些信息,但沒有成功,Terracotta有什麼問題阻止人們使用它?

回答