我有一个允许多个用户访问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