2015-10-19 68 views
2

在Apache Tomcat服務器上的羣集環境中部署JSF2.0。如何在羣集環境中複製視圖範圍的bean?JSF2.0 @Viewscoped bean不在羣集環境中複製

大部分bean都在viewscoped中,狀態保存方法是客戶端。

問題是:當我打開Home.xhtml的第一個請求去節點1.視圖範圍的bean被創建。點擊操作按鈕進行處理並加載相同的視圖,現在請求轉到節點2 - 視圖不存在的地方.JSF創建新的viewscoped bean,這是我在node1中丟失之前狀態的地方。

另一方面JSF視圖狀態可能無法在羣集環境中正常工作。如何在集羣環境中使用JSF2?

除會話複製和粘滯會話外,是否還有其他解決方案?

+0

會話複製或粘性會話就是答案。不這樣做有許多其他的副作用,而不是破碎的視圖範圍。不知道爲什麼你不想使用你顯然已經知道的正確解決方案。 – BalusC

+0

BaluC,謝謝你的回覆。由於架構限制無法使用會話複製或粘滯會話。有沒有解決這個問題的方法? –

+0

如果集羣體系結構不是爲有狀態的web應用程序設計的,那麼你最好重新設計你的web應用程序作爲一個無狀態的應用程序(例如,堅持要求有範圍的bean並通過請求參數手動攜帶狀態)。 – BalusC

回答

0

如果應用程序在單個請求中發佈整個請求,那麼JSF viewscope,客戶端狀態保存可以在羣集環境中工作,不要嘗試發送部分頁面請求。

如果更改UI中的某些字段將由JSF在服務器中複製,因爲您發送的是整個狀態而不是部分狀態。