2017-09-25 27 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

정말 고마워요, 앤디! 정말 도움이 되서 노력하고 있어요! 귀하의 솔루션과 세부 사항에 감사 드리며 매우 명확합니다! –