2017-09-25 4 views
0

エキスパート自由に変更ファイルを自動的にリロードする方法

Libertyで自動的に更新されたファイルをリロードする必要があります。もっと明確にするために、私は自由に "dropins"のような道を作りたい、それは自動的にファイルの変更を検出するか、このフォルダを手動でスキャンすることができます。彼らが変更されたときに、このフォルダにファイルをロードする必要があります。

これを達成する方法はわかりません.... 誰でもここに知っていますか?

Thx!

答えて

2

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()); 
     } 
    } 
} 

希望、

アンディを

+0

本当にありがとうございました、アンディ!それは本当に役に立ち、私はそれを試しています!あなたのソリューションと詳細をありがとう、それは非常に明確です! –

関連する問題