複数のユーザーが 1 つの xml ファイルにアクセスできるアプリケーションがあります。問題は、すべてのユーザーが一度に保存すると、他のユーザーによる他の変更が保存されないことです。ファイルがgroovyのユーザーにあるかどうかを検出するにはどうすればよいですか?
ありがとう!
複数のユーザーが 1 つの xml ファイルにアクセスできるアプリケーションがあります。問題は、すべてのユーザーが一度に保存すると、他のユーザーによる他の変更が保存されないことです。ファイルがgroovyのユーザーにあるかどうかを検出するにはどうすればよいですか?
ありがとう!
この問題は特に groovy/grails とは関係ありませんが、同時ファイル変更の基本的な問題です。この問題は、SVN や CVS などのソース コード管理システム (SCCS) と同じ方法で処理する必要があります。
具体的には、ファイルが最後に変更された時刻を保存します。これは、ファイル自体、ファイルのメタデータ、または XML ファイルがアップロードされるたびに提供される別のファイルに保存できます。ユーザーがファイルをアップロードするとき、コピーを取得してから (別のユーザーによって) 変更されていないかどうかを確認します。ある場合は、いくつかの選択肢があります。
1 つのアプローチ (やり過ぎかもしれません) は、実際に SCCS を使用してこのバージョン管理の問題を処理することです。プログラムでファイルをチェックイン、チェックアウト、およびマージできるようにするCVS (およびおそらく他の SCCS) 用の Java APIがあります。
この提案は、ファイルの同時変更を許可する必要があることを前提としています。そうでない場合は、同時変更を禁止するアプローチを使用して問題を解決する方が簡単です。
更新:コメンターの 1 人が言及し
たプロパティに関するいくつかの情報は、 Grails リファレンス マニュアルversion
のセクション 5.3.5 および 5.5.2.7 で入手できます。
別のアプローチ: ファイル -> ユーザー マッピングを含むグローバル スコープのハッシュマップを維持します (または、どのユーザーがファイルをロックしたかが関係ない場合はファイルのリストのみ)。ユーザーがファイルを開こうとした場合:
このようなグローバル スコープのハッシュマップは、属性としてServletContextに格納される場合があります。これも参照してください。