そのため、サーバーが起動してフォルダーに追加されたファイルを取得するときにwatchServiceを実行する必要があるため、Context Listenerを使用することにしました。これが私がやろうとしていることのサンプルコードです。明らかに機能していませんが、必要なものを要約しています:
@WebListener
public class StartupClass implements ServletContextListener{
@Override
public void contextInitialized(ServletContextEvent eve){
try {
Path Folder = Paths.get("C:/Users/User/Desktop/Test");
WatchService watchService = FileSystems.getDefault().newWatchService();
WatchKey key = Folder.register(watchService,StandardWatchEventKinds.ENTRY_CREATE);
boolean valid = true;
do {
WatchKey watchKey = watchService.take();
for (WatchEvent<?> event : watchKey.pollEvents()) {
WatchEvent.Kind kind = event.kind();
if (StandardWatchEventKinds.ENTRY_CREATE.equals(event.kind())) {
String fileName = event.context().toString();
}
}
valid = watchKey.reset();
} while (valid);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void contextDestroyed(ServletContextEvent event){
}
}
ご覧のとおり、無限ループ「 while(valid 」により、アプリが正しくデプロイされないため、テストすることさえできません。
これを適切に解決する方法について、提案とアドバイスが必要です。ありがとう