2010-08-25 47 views
2

我已經看過Apache Commons FileUtils.java類的源代碼,以瞭解它們如何實現像觸摸功能一樣的unix。但我想在此與社區確認,如果我的使用案例能夠通過實施來滿足,它會打開並關閉FileOutputStream以提供觸摸功能使用apache觸摸文件FileUtils

我們有兩個Web服務器和一個文件所在的公用服務器

對於我們的應用程序,我們需要使用修改後的文件做出一些決定。實際上,我們不希望修改文件,但在某個網絡服務器上發生某些特定活動時更改其最後修改日期。

爲了避免擔心兩個Web服務器之間的時間差異,從中央服務器獲取爲文件設置的上次修改時間很重要。因此,更改file.setLastModfiied不是一個好的選擇,因爲Web服務器會發送自己的時間。

但我想知道,即使我使用Apache Commons FileUtils touch方法來做到這一點,將關閉一個網絡服務器上的流設置文件的最後修改時間使用Web服務器或中央服務器的時間。

對不起,這麼多的細節,但看不到任何其他的方法來解釋問題

回答

1

如果您「觸摸」在一個網絡服務器的文件系統中的文件,那麼該文件的時間戳將使用時鐘設置的服務器。我不認爲你可以這樣解決你的問題。

我覺得你有三種選擇:

  • 配置服務器,以他們的時鐘,以共同時基同步;例如使用NTP,
  • 將時間戳必須精確到時間戳的所有文件放在一臺服務器上的公共時基上,或者更改您的系統設計,以便不受不同服務器時鐘不同步的問題影響。
+0

感謝您的回覆。在我們的例子中,文件位於一個公共服務器中,並且這兩個Web服務器實際上都使用符號鏈接指向該位置。 有了這個設置哪個服務器的時鐘將被拾取? – Fazal 2010-08-25 15:34:20

+0

它取決於Web服務器如何使用符號鏈接。他們需要使用File.getCanonicalFile()或等價的方法解決它們。另外,它可能取決於Web服務器如何訪問共享文件系統。但是,您應該能夠通過查看Web服務器實際返回的時間戳來獲得答案。 – 2010-08-26 09:26:47

+0

感謝您的回覆。我會研究它 – Fazal 2010-08-26 14:53:17

0

如果你有一個共享數據庫,這樣可以避免併發和同步問題,那將會好得多。我不能推薦任何簡單和安全的分佈式文件標誌系統。