エキスパート自由に変更ファイルを自動的にリロードする方法
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());
}
}
}
希望、
アンディを
本当にありがとうございました、アンディ!それは本当に役に立ち、私はそれを試しています!あなたのソリューションと詳細をありがとう、それは非常に明確です! –