2012-09-11 21 views
2

我需要實現一些機制來防止用戶在同一時間編輯相同的對象。這是我的申請流程:Java EE - 並行編輯,多用戶,任何想法?

  1. 轉到「列表」頁面
  2. 選擇要編輯的行形成的DataTable
  3. 點擊編輯按鈕(導航到「編輯」頁)
  4. 更改數據
  5. 點擊「保存」或‘取消’(導航回‘列表’頁)

我希望我能在第3步檢查,如果另一個用戶編輯相同的記錄(同一ID)和顯示信息,例如。 '對不起,另一個用戶正在編輯這個'。

我的想法是保持登錄的用戶和表名+ id的地圖,他們目前正在編輯。爲此,我會使用應用程序範圍的bean(例如EJB 3.1 @Singleton)。你能指出這個解決方案的弱點嗎?你能提出其他的嗎?

我使用Java EE 6,Seam3,Glassfish 3和Oracle DB 11.我使用MyBatis,沒有JPA框架。

回答

0

你會好得多有某種機制來接受良好標識的變更,並應用更改時,如果檢測的變化對數據的不同副本比現在存在的發起,並引發異常。

這種工作流可以防止可怕的,「我不能挽救公司,因爲有人在CA開始轉變臨界紀錄,但隨後去吃午飯。」

閱讀the Subversion book的前幾章。雖然你目前並未與數據版本控制而言,衝突的情況都比較齊全,而且比舊的「圖書館」系統,在這裏分享項目將不能使用,只要他們擁有一個人的更好的深思熟慮。