我有一個允許多個用戶訪問1個xml文件的應用程序。問題是,當所有的用戶立即保存其他用戶的其他更改不會被保存。如何檢測文件是否在groovy中的用戶?Groovy中的多文件訪問(Groovy on Grails)
謝謝!
我有一個允許多個用戶訪問1個xml文件的應用程序。問題是,當所有的用戶立即保存其他用戶的其他更改不會被保存。如何檢測文件是否在groovy中的用戶?Groovy中的多文件訪問(Groovy on Grails)
謝謝!
這個問題沒有什麼特別與groovy/grails,但只是一個併發文件修改的根本問題。您應該像處理SVN或CVS這樣的源代碼控制系統(SCCS)來處理這個問題。
具體而言,存儲文件上次修改的時間。這可以存儲在文件本身,文件的元數據中或每次上傳XML文件時提供的另一個文件中。當用戶上傳文件時,請檢查自從他獲得副本後是否修改了該文件(由其他用戶修改)。如果有,你有多種選擇:
一種方法(可能是矯枉過正)將實際使用SCCS來處理此版本問題。有一個Java API for CVS(也可能用於其他SCCS),它使您能夠以編程方式簽入,簽出併合並文件。
此建議假定您需要允許同時修改文件。如果不這樣做,那麼使用禁止同時修改的方法來解決問題會更簡單。
更新: 有關version
財產所提到的評論者之一,是在部分5.3.5和Grails reference manual
另一種方法的5.5.2.7提供一些信息:保持一個全球範圍的HashMap中包含的文件 - >用戶映射(或僅當文件列表與用戶鎖定文件無關時)。如果用戶試圖打開一個文件:
這種全球範圍的HashMap的MIG被刪除將其作爲屬性存儲在ServletContext中。另見this。
感謝輸入的傢伙!對此,我真的非常感激。 – 2010-04-19 08:20:35
如果他們通過網頁進行編輯,並且xml文件具有域對象,則可以使用選項1的版本屬性;) – 2010-04-19 07:50:59
您好,您是否有任何有關版本屬性的良好鏈接?快速瀏覽谷歌和Grails書的權威指南,它絕對是一種識別併發修改實例的好方法,但維基百科說(http://en.wikipedia。org/wiki/Optimistic_concurrency_control),它可能不是最有效的方式來處理它。另外一個工作的例子將是方便的:-) – Armand 2010-04-19 11:13:33