在JSF,EJB和JPA中創建Web應用程序時,我們有一個意識形態問題。在EJB中的一個會話中存儲同時編輯的實體JSF
我們的例子情況是:
管理員顯示的數據表的用戶列表。接下來,他選擇user1,這導致他進入新的用戶版網站。如果他嘗試打開第二張卡或窗口並在同一會話中選擇user2進行同步編輯,則會出現此問題。 當我們嘗試在編輯後保存user1數據時,它是不可能的,因爲它在端點被user2覆蓋。
數據存儲: 因爲我們沒有在我們的項目的View部分存儲任何數據[下圖可用],所以在顯示它之後,Managed Beans被銷燬。因此,在Controller部分中,我們決定將當前選定的用戶保留爲Endpoint [Stateful EJB Bean]中的字段,該會話由Session Sessiond Managed Bean持有,因此對於會話是不變的。 我們相信我們不應該在Endpoint或Session Scope Managed Bean中存儲任何集合。
問題: 特定情況是對情況的概述。在我們的應用程序中,我們希望在會話期間編輯同一類型的多個實體。
問題: 我們應該在哪裏以及如何存儲用戶/管理員的當前選擇,從而導致該選定實體的版本。
將數據存儲在視圖中,請求作用域部分允許我們控制同一會話中的多個實體,儘管我們認爲這不是合適的方法。但是現在將其存儲在控制器部分中會導致在同一會話中編輯同一類型的一個實體的限制。
框圖位置:http://i.stack.imgur.com/9PyYr.jpg
什麼應用程序服務器和它使用什麼版本? – 2012-07-27 13:59:58
Glassfish 3.1。 它使@AdrianMitev有什麼不同? – Atais 2012-07-27 14:14:51