ウェブサイトでページがリクエストされるたびに、次のようなサービスコールで詳細を記録します。
logService.logPageRequest(session, request, contentId);
このサービス呼び出しは、静的FileUtils(私自身の)メソッドを使用して、ファイルの実際の更新を行います。
public static void appendToTextFile(String string, String fileRootDirectory, String subdirectory, String filename, boolean startOnNewLine) throws Exception {
// code irrelevant to the question removed
String filePath=fileDirectory+"/"+filename;
File file=new File(filePath);
if(file.exists()) {
FileWriter out = new FileWriter(filePath, true);
if(startOnNewLine) {
out.write("\r\n");
}
out.write(string);
out.close();
} else {
FileWriter out = new FileWriter(filePath);
out.write(string);
out.close();
}
時々(たとえば15分ごとにスケジュールされます)、このファイルの名前を変更して処理を開始する別のサービスを実行します。
両方の同時書き込みが安全であり、書き込みの処理中に名前変更が実行されないようにする方法を理解したいと思います。答えは何らかの形の同期になると思います。