Мне нужно отслеживать изменения (загруженные файлы) в двух каталогах в веб-приложении. Я создал ServletContextListener, который запускает мониторинг этих двух каталогов.Watch Service Java - Два параллельных потока в фоновом режиме
Моя проблема заключается в том, что при первом запуске поток блокируется, а второй мониторинг не запускается.
Можно ли отслеживать две разные папки, работающие параллельно и в фоновом режиме?
Я знаю, что проблема связана с бесконечным циклом, но не знаю, как поставить эту нить в фоновом режиме. Любая помощь будет оценена. Большое спасибо заранее
ContextListener
@Override
public void contextInitialized(ServletContextEvent event) {
Path pathFolder1 = Paths.get("my_folder_1_path");
MyWatcher watcher1 = new MyWatcher();
Path pathFolder2 = Paths.get("my_folder_2_path");
MyWatcher watcher2 = new MyWatcher();
watcher1.startMonitoring(pathFolder1);
watcher2.startMonitoring(pathFolder2);
}
MyWatcher
public void startMonitoring(Path directory) {
try {
FileSystem fs = directory.getFileSystem();
WatchService watcher = fs.newWatchService();
while(true) {
directory.register(watcher, StandardWatchEventKinds.ENTRY_CREATE, StandardWatchEventKinds.ENTRY_DELETE);
WatchKey watckKey = watcher.take();
List<WatchEvent<?>> events = watckKey.pollEvents();
for (WatchEvent event : events) {
if (event.kind() == StandardWatchEventKinds.ENTRY_CREATE) {
System.out.println("File created: " + event.context().toString());
}
if (event.kind() == StandardWatchEventKinds.ENTRY_DELETE) {
System.out.println("File removed: " + event.context().toString());
}
}
watckKey.reset();
}
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Какие технологии на стороне клиента вы используете? – pahan
Мое окружение Wildfly10 jsf primefaces – gfinotti