2010-08-12 40 views
0

在應用程序中,使用XML數據庫,在寫入服務器時將使用戶擁有信息。管理員用戶也可以寫/讀這些文件的信息。 我該如何處理對這些文件的併發訪問? 用戶/管理員可以讀取/寫入這些文件的唯一方法是向服務器請求(套接字,TCP連接),因此服務器必須處理這個問題。 我能做什麼?我可以同步服務器方法,但我不想避免USER A在管理員寫入USER B文件時訪問他的文件。處理使用java服務器併發訪問XML文件

回答

1

使用數據庫而不是文件是我的第一個建議,它們已經處理了鎖。

你應該發佈一個文件結構的例子。如果用戶A在fileA.xml中有他的數據,並且用戶b在fileB.xml中通過鎖定給定文件並基於該文件進行同步,則可以完成此操作。

+0

USER A有他自己的文件usera.xml 和USER B有他自己的文件userb.xml ... 我怎樣才能通過文件鎖定? – fredcrs 2010-08-12 17:02:00

+1

您持有指向文件的鎖定圖。每次用戶登錄並請求文件時,他都會獲得該文件的鎖定(這是全部同步的)。 另一個用戶現在可以登錄並請求鎖定另一個文件,並且它不應該干擾第一個用戶。 – Jes 2010-08-13 08:53:10

+0

我可以鎖定到一個FileChannel實現一個鎖的映射的實例嗎? – fredcrs 2010-08-13 11:35:48

1

正如Jes說的那樣使用數據庫。
MySQL支持XML:http://dev.mysql.com/tech-resources/articles/xml-in-mysql5.1-6.0.html
大多數數據庫都支持XML,或者您可以簡單地使用足夠長的VARCHAR並獲取並放入數據。如果這是您的計劃,那麼也許NoSQL解決方案也可以工作,它只是一個持久的HashMap,支持記錄鎖定以及其他功能。

聽起來好像用戶之間沒有衝突,你也可以做的是讓管理員修改文件的區域,每天將文件複製到用戶讀取數據的位置。