2011-10-28 32 views
3

我剛剛閱讀Adam Bien的Why stateful and local anti-facades are KISS,他建議使用帶有EntityManager的SFSB在整個客戶端交互過程中保留實體。帶有不可序列化的EntityManager的有狀態會話bean鈍化?

  1. 簡化版,在集羣環境中這種失敗不是在評論中提及,而且每當SFSB應該由容器鈍化?

  2. 如果我說得對,你會建議什麼樣的解決方案?我想盡量減少應用程序中的層數,將SFSB綁定到對話範圍並直接在我的JSF視圖中引用它們會很有用。

+1

我可以回答#1:是的,擴展PC將防止鈍化(從而進行故障切換)。我不知道如何回答#2;我不清楚你想要解決什麼問題。 –

+0

它涉及到鈍化時是交易範圍還是擴展?我試圖找出用於我的應用程序的EJB 3/CDI/JSF的基本設計。內存消耗可能不會成爲問題,所以我認爲我會去「有狀態」的設計來規避合併實體。 – user953217

+0

我猜Tx或擴展類型**確實很重要。看看* EJB 3.1 FR規範* **「4.2有狀態會話Bean的會話狀態」**:「一個容器**不能**使用擴展持久化上下文鈍化有狀態會話Bean,除非下列條件met:1.持久化上下文中的所有實體都是可序列化的。2. EntityManager是可序列化的。「 –

回答

1

通常,擁有基於狀態的體系結構是計數器可擴展的。

我已經在EJB 3 SLSBs上工作超過5年了,現在已經在多個項目中工作,並且從未遇到與合併實體有關的實際問題。

如果您希望通過添加一層DTO將您的客戶層與持久層分離開來。通過這種方式,您可以根據您的客戶想要呈現數據的方式,根據對業務/持久層和DTO最好的方式設計實體模型。

如果你想使用相同的對象,你仍然可以做到這一點,你應該只關注哪些對象是「在會話中」,哪些是分離的,你不會有任何合併問題。

相關問題