Jetty Scanner 를 이용한 특정 디렉토리 및 파일 변경사항(delete, change, add) 모니터링
개발/Java2017. 4. 25. 13:50
maven jetty plugin 옵션 중에 scanIntervalSeconds 라는 옵션을 줘서 파일이 변경됬을 경우 일정시간 마다 서버를 리스타트 하는 기능이 있다.
이것과 비슷하게 지정된 특정 디렉토리에 파일이나 디렉토리가 생성, 삭제, 변경 되는 것을 모니터링 하는 클래스를 맨들어 보았다.
이것을 위해서 Jetty util 패키지에 있는 Scanner 클래스를 사용했다.
maven 사용자는 다음과 같은 dependency 를 추가한다.
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-util</artifactId>
- <version>8.0.1.v20110908</version>
- </dependency>
maven 사용안하는 사람은 jetty-util-8.0.1.v20110908.jar 요파일을 클래스 패스에 추가 시켜 주면 된다.
jetty-util-8.0.1.v20110908.jar
FileChangeScanner 클래스는 다음과 같다. DiscreteListener 클래스의 각각의 경우에 대해서 원하는 엑션을 취해주면 된다.
- package scanner;
- import java.io.File;
- import java.io.FileFilter;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Timer;
- import java.util.TimerTask;
- import org.eclipse.jetty.util.Scanner;
- public class FileChangeScanner {
- private Scanner scanner;
- List<File> scanFiles = new ArrayList<File>();
- searchSubDirs(targetDir, scanFiles);
- scanner = new Scanner();
- scanner.setScanInterval(1); // 1초 간격으로 변경사항 스캔
- scanner.setScanDirs(scanFiles);
- scanner.setReportExistingFilesOnStartup(false);
- scanner.addListener(new Scanner.DiscreteListener() {
- }
- }
- if(f.isDirectory()) scanner.addScanDir(f);
- }
- });
- }
- public void start(){
- try {
- scanner.start();
- }
- }
- /**
- * 하위 디렉토리들 찾기
- * @param targetDir
- * @param dirs
- * @return
- */
- if( file.isDirectory() ) {
- dirs.add(file);
- searchSubDirs(file.toString(), dirs);
- }
- return false;
- }
- });
- return dirs;
- }
- // c:\test 하위 폴더 및 파일 변경 감시
- new FileChangeScanner("c:\\test").start();
- // 실행하자 마자 프로그램이 종료되기 때문에 프로그램 종료방지를 위해 타이머 생성
- // WAS 환경에서 돌릴때는 타이머 생성할 필요없음
- public void run() {}
- }, 60*1000, 60*1000 );
- }
- }
출처 : http://stove99.tistory.com/61
'개발 > Java' 카테고리의 다른 글
Ant-style path patterns (0) | 2019.02.07 |
---|---|
spring @ControllerAdvice 설정 팁 (0) | 2019.02.02 |
Java ImageIO 이미지 성능을위한 5 가지 팁 (0) | 2017.01.18 |
<mvc:annotation-driven>이 하는 일 (0) | 2016.07.28 |
java 파일 읽고 쓰기 (0) | 2016.07.05 |