crawler4j не работает при использовании его с TimerTask

Мы пытались использовать сканер, чтобы мы могли сканировать определенный веб-сайт через определенный промежуток времени. Для этого мы пытаемся включить сканер в таймер. Но после первого успешного сканирования с использованием таймера в консоли всегда говорится:

Похоже, что поток не работает, ожидая 10 секунд, чтобы убедиться... Поток не работает, и в очереди больше нет URL, ожидающих еще 10 секунд, чтобы убедиться... Все сканеры остановлены. Завершение процесса... Ожидание в течение 10 секунд перед окончательной очисткой... CrawlerScheduler завершил работу в: среда, 19 ноября 18:41:36 IST 2014

для каждого последующего сканирования с использованием таймера. Сканер снова не работает. Мы просмотрели исходный код, чтобы выяснить причину, но не смогли.

вот код:

Открытый класс CrawlerScheduler расширяет TimerTask {

@Override
public void run() {
    try {
        System.out.println("CrawlerScheduler started at:"+new Date());
        int numberOfCrawlers = 1;
        String crawlStorageFolder = ".";       
        CrawlConfig crawlConfig = new CrawlConfig();
        crawlConfig.setCrawlStorageFolder(crawlStorageFolder);
        PageFetcher pageFetcher = new PageFetcher(crawlConfig);       
        RobotstxtConfig robotstxtConfig = new RobotstxtConfig();
        RobotstxtServer robotstxtServer = new RobotstxtServer(robotstxtConfig, pageFetcher);
        CrawlController controller = new CrawlController(crawlConfig, pageFetcher, robotstxtServer);       
        controller.addSeed("http://wwwnc.cdc.gov/travel/destinations/list");       
        controller.start(Crawler.class, numberOfCrawlers);           
        System.out.println("CrawlerScheduler finished at:"+new Date());
    } catch (Exception ex) {
        Logger.getLogger(CrawlerScheduler.class.getName()).log(Level.SEVERE, null, ex);
    }
}

public static void main(String ar[]){
    TimerTask timerTask = new CrawlerScheduler();
    Timer timer = new Timer();
    timer.scheduleAtFixedRate(timerTask,10,6*60*1000); 
    try {
        Thread.sleep(3000);
    } catch (InterruptedException ex) {
        Logger.getLogger(CrawlerScheduler.class.getName()).log(Level.SEVERE, null, ex);
    }
}

}

0 ответов

Другие вопросы по тегам