如何在Grails中的服务器启动时运行调度程序/计时器

时间:2010-09-28 12:37:32

标签: grails

我有一个计时器类,计划每5分钟执行一次。我想在tomcat第一次启动时启动这个计时器类。在Grails中这样做的最佳方法是什么?

谢谢。 杰伊·钱德兰

2 个答案:

答案 0 :(得分:5)

如果您需要比定时器更多的灵活性,可以使用Quartz Plugin并配置Cron作业:

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

    def execute = {
        // perform task
    }
}

要在应用程序启动时启动Quartz(就像Jared所说:不在 tomcat 启动时),请确保您的grails-app/conf/QuartzConfig.groovy具有以下内容:

quartz {
    autoStartup = true
}

autoStartup = true是默认值,因此您可能不需要更改任何内容。

使用此插件将使您不必自己处理计时器逻辑。

答案 1 :(得分:2)

Tomcat启动时无法启动计时器类,因为它无法访问Grails应用程序,并且需要执行所有相关数据。您可以在Grails应用程序启动时启动它,方法是将必要的代码放入Conf / bootstrap.groovy