我是JSF和EE的新手,試圖理解爲項目做出正確設計決策的最佳方法。我正在自己的工作,20多年後重新學習,追求一個雄心勃勃的商業理念。範圍和實體類
我的問題涉及到我所做的設計選擇對系統開銷和性能的影響。我正在使用EE7,JSF 2.2.6,NetBeans 7.4,Glassfish等所有最新版本。如果我沒有最新的版本,我將隨時升級。
這是一個很大的問題,我猜想,因爲它涉及到web容器作用域,ejb類型和EM與EMF的完整路徑。我讀了很多,並相信我理解哲學,但可能不完全。
我的應用程序涉及(希望1,000-100,000 +)同時登錄的用戶將連接4-6小時,但每隔10分鐘左右才發出請求。首先,它可能只有100左右,而我的短期目標是從那裏開始工作和改進。然而,我寧願預先做出正確的決定。
從我的閱讀我的理解是,大多數會使用@SessionScoped支持豆(用戶登錄時),@Stateless託管豆和可能是一個容器管理的實體管理器。
雖然這似乎是最簡單的程序我的解釋是,開銷會很大: - 我將有連接用戶一樣多的會話範圍實例; - 與我有用戶一樣多的無狀態EJB,因爲它們被SessionScoped bean注入 - 實體管理器中的一個海量緩存,因爲每個用戶對數據都有不同的興趣。 - 我也假設web和ejb會話等於java線程,而不僅僅是一些存儲的數據。
這明白嗎?
雖然複雜得多,但我認爲性能更好的系統會涉及到我自己的會話控制,請求範圍bean,無狀態ejb和應用程序管理實體管理器(emf),我只在長期交易時保留緩存。這將創建一個具有較少實例並因此線程,交換,光盤緩存等等的混合環境。
我已經讀了很多,使用大量BalusC建議構建了一個測試環境,並且對大多數事情有合理但理論上的理解從JSF生命週期開始。就像JSF和EE的平臺似乎是一個很好的決定一樣,學習曲線有點壓倒一切。
任何澄清指向我在正確的方向將不勝感激。
由於提前, 約翰
我覺得所有可用的集裝箱彙集EJB線程和蓋大小。這個上限應該默認爲低於100k,其餘的bean被鈍化,就像會話範圍的那樣。 – mabi
@Michele非常感謝Michele的全面回答。我的設計足夠靈活,可以按照您的建議稍後應用優化,所以我只會繼續堵塞。就交通而言... 20年前我編寫了實時數據通信系統,所以我非常瞭解這一部分。乾杯! – GolfAddict
歡迎您,祝您工作順利。 –