0
專家。如何自動重新加載更改文件
我需要在Liberty中自動更新時重新加載文件。爲了更清楚地說明,我想自由地創建一個類似「dropins」的路徑,它可以自動檢測文件的更改,或者我們可以手動掃描該文件夾。當他們改變時我需要加載這個文件夾中的文件。
我不知道如何實現這個...... 任何人都可以在這裏知道嗎?
Thx!
專家。如何自動重新加載更改文件
我需要在Liberty中自動更新時重新加載文件。爲了更清楚地說明,我想自由地創建一個類似「dropins」的路徑,它可以自動檢測文件的更改,或者我們可以手動掃描該文件夾。當他們改變時我需要加載這個文件夾中的文件。
我不知道如何實現這個...... 任何人都可以在這裏知道嗎?
Thx!
如果您不反對writing a Liberty feature(不難,但需要一點背景知識),那麼您可以通過將com.ibm.wsspi.kernel.filemonitor.FileMonitor
接口實現爲聲明式服務來爲特定文件的更改註冊偵聽器。一旦註冊爲DS,Liberty文件監視器將調用您的實現方法。它在啓動時調用onBaseline(Collection<File> baseline)
,並在發生某種改變時調用onChange(Collection<File> createdFiles, Collection<File> modifiedFiles, Collection<File> deletedFiles)
。
一個實現可能是這樣的:
@Component(immediate="true", property={"monitor.directories=/path/to/myMonitoredDir"})
public class MyFileMonitor implements FileMonitor {
@Override
public void onBaseline(Collection<File> baseline) {
System.out.println("Initial file state:");
for (File f : baseline) {
System.out.println(f.getName());
}
}
@Override
public void onChange(Collection<File> createdFiles, Collection<File> modifiedFiles, Collection<File> deletedFiles) {
System.out.println("Newly added files:");
for (File f : createdFiles) {
System.out.println(f.getName());
}
System.out.println("Newly deleted files:");
for (File f : deletedFiles) {
System.out.println(f.getName());
}
System.out.println("Modified files:");
for (File f : modifiedFiles) {
System.out.println(f.getName());
}
}
}
希望這有助於
安迪
非常感謝,安迪!這真的很有幫助,我正在嘗試!感謝您的解決方案和細節,這非常明確! –