Как запустить планировщик / таймер при запуске сервера в Grails - PullRequest
4 голосов
/ 28 сентября 2010

У меня запланирован класс таймера для выполнения каждые 5 минут. Я хочу запустить этот класс таймера, когда Tomcat запускается в первый раз. Каков наилучший подход для этого в Grails?

Спасибо. Джей Чандран

Ответы [ 2 ]

5 голосов
/ 28 сентября 2010

Если вам нужна большая гибкость, чем просто таймер, вы можете использовать Quartz Plugin и настроить задание Cron:

class MyTimerJob {
    static triggers = {
        // cron trigger for every 5 minutes
        cron name: 'myCronTrigger', cronExpression: '0 */5 * * * ?'
    }

    def execute = {
        // perform task
    }
}

Чтобы запустить Quartz в приложении автозагрузка (как сказал Джаред: не при tomcat автозагрузка), убедитесь, что ваш grails-app/conf/QuartzConfig.groovy имеет следующее:

quartz {
    autoStartup = true
}

autoStartup = true по умолчанию, так что вы, вероятно, выиграли 'Там не нужно ничего менять.

Использование этого плагина избавит вас от необходимости самостоятельно обрабатывать логику таймера.

2 голосов
/ 28 сентября 2010

Вы не можете запустить класс таймера при запуске Tomcat, так как у него не будет доступа к вашему приложению Grails со всеми связанными данными, которые ему нужно выполнить. Вы можете запустить его, когда ваше приложение Grails запустится, добавив необходимый код в Conf / bootstrap.groovy

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...