У меня есть рабочий код, который прослушивает каталог с помощью WatchService и отвечает на события, которые я указываю. Это отлично работает и проверено как на linux, так и на mac (хотя на последнем видно, что используется опрос).
Однако, когда я развернул это в процессе производства, оказывается, что контролируемый каталог - это монтирование NFS. Поскольку WatchService использует inotify при работе в Linux, никогда не было никаких событий, вызванных тем, что NFS mounts не запускают события inotify (или что-то вроде этого, здесь больше информации, что объясняет мою проблему: Java WatchService не генерирует события при просмотре подключенных дисков).
Так как мой код уже написан, я бы предпочел заставить WatchService использовать реализацию опроса, а не inotify. Есть ли способ сделать это?
Я попытался найти исходный код sun.nio.fs.PollingWatchService и создать объект напрямую (вместо использования FileSystems.getDefault(). newWatchService()), но при регистрации службы с помощью пути я получил это исключение: java.nio.file.ProviderMismatchException.
Итак, какие-то идеи? Поскольку я уже реализовал код с помощью WatchService и WatchKey API, было бы намного проще просто заставить опрос, чем переписывать все, используя пользовательский или сторонний опроллер. Спасибо!