2014-03-19 63 views
2

我是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的平臺似乎是一個很好的決定一樣,學習曲線有點壓倒一切。

任何澄清指向我在正確的方向將不勝感激。

由於提前, 約翰

回答

3

這是瞭解近?

部分。

我將擁有多個會話範圍 個實例,因爲我已連接用戶;

是的,這是正確的。但是這個數字是「虛擬的」,因爲容器可以在LRU算法和閾值上將其中的一些序列化到磁盤(確切地說,整個會話被序列化)。

儘可能多的無狀態EJB的,因爲我 有用戶,因爲它們是由SessionScoped豆

這取決於容器實現注入。有理由說他們實施這種機制是最有效的方式。最糟糕的情況是#SessionScoped bean(注入EJB)=#用戶的EJB =#。在實體管理器爲每個用戶

一個 大規模高速緩存在數據不同的 興趣。

緩存是可配置的,但IMO你shuold考慮高速緩存大小(添加更多的內存?)和服務表現之間的權衡(如果沒有緩存?如果緩存中包含了每一個實體是什麼?)

我還假設web和ejb會話等於 java線程,而不僅僅是一些存儲的數據。

不,EJB(無狀態,有狀態和單例)只是數據。計劃的一個和MDB更類似於您的想法(它們不是線程,但由執行程序創建一個線程來調用它們)。

雖然複雜得多我承擔了性能更好的系統將包括我自己的會話控制,請求範圍豆,無國籍EJB和應用程序管理的實體管理器(EMF),我只保留緩存時,它是一個長期的交易。

它取決於您如何配置應用程序服務器,持久性提供程序以及如何開發業務邏輯控制器bean。但是,此列表中的每個點都可以稍後進行配置/優化(在重構控制器上花費更多精力)。

這將產生一個池環境具有較少實例,因此線程,交換盤高速緩存,等等

EE棧正好具有這種觀點。線程被彙集並重用,它們不是用戶特定的,而是請求特定的。 10個線程池可合理服務於100多個用戶。

我讀過很多,使用大量的BalusC建議構建了一個測試環境,並對JSF生命週期中的大多數事情有一個合理但理論上的理解。就像JSF和EE的平臺似乎是一個很好的決定一樣,學習曲線有點壓倒一切。

從你所要求很清楚,學習曲線也不是那麼勢不可擋你:)

雖然相比其他技術EE棧是真的很重,它是可擴展的,靈活的和可擴展的。像你一樣,我認爲這是一個不錯的選擇。


以我的經驗,影響性能的最糟糕的事情是網絡速度和流量。在某些情況下,我看到加載主頁中央圖像比執行具有數千行的複雜報表要花費更多的時間。

不過,不用擔心(太多)關於優化,因爲premature optimization is the root of all evil

+0

我覺得所有可用的集裝箱彙集EJB線程和蓋大小。這個上限應該默認爲低於100k,其餘的bean被鈍化,就像會話範圍的那樣。 – mabi

+0

@Michele非常感謝Michele的全面回答。我的設計足夠靈活,可以按照您的建議稍後應用優化,所以我只會繼續堵塞。就交通而言... 20年前我編寫了實時數據通信系統,所以我非常瞭解這一部分。乾杯! – GolfAddict

+0

歡迎您,祝您工作順利。 –