Grails 如何避免grail应用程序启动时启动quartz

Grails 如何避免grail应用程序启动时启动quartz,grails,groovy,quartz-scheduler,Grails,Groovy,Quartz Scheduler,我在GRAILS中有一个简单的应用程序,它使用Quartz2插件。 在作业文件中,我有: static triggers = { simple repeatCount: 0 // execute job once in 5 seconds cron cronExpression: '0 15 2 * * ?' } def execute() { if (Environment.current == Environment.PRODUCTION) do s

我在GRAILS中有一个简单的应用程序,它使用Quartz2插件。 在作业文件中,我有:

static triggers = {
    simple repeatCount: 0 // execute job once in 5 seconds
    cron cronExpression: '0 15 2 * * ?'
}

def execute() {
    if (Environment.current == Environment.PRODUCTION)
        do something...
}
在这种情况下,一切正常,如果不在生产中,触发器将被忽略。 现在问题很简单,如果我在生产环境中启动应用程序,grails一启动,作业就开始了。我希望避免在应用程序启动后立即运行作业,但只有在cronExpression中正确设置时才运行作业

有什么想法吗

更新: 最后,我将这一行放在config.groovy中:

environments {
    development {
       grails.logging.jul.usebridge = true
       grails.plugin.quartz2.autoStartup = false
    }
    production {
      grails.logging.jul.usebridge = false
  }  
}
现在,它似乎不是从引导开始,我必须做一些测试更多,我让你知道

多谢各位

更新2: 好了,现在计划根本没有启动,我希望它会启动,但不执行计划的作业,而是等待正确的时间触发它。有什么帮助吗

非常感谢

更新3:
抱歉,但我觉得自己真的很愚蠢,添加简单的repeatCount:0在启动时触发一次,因此删除它使其工作正常,再次抱歉。

通过设置
conf\QuartzConfig.groovy
,您可以控制作业自动启动的环境。例如:

quartz {
    autoStartup = true
    jdbcStore = false
    waitForJobsToCompleteOnShutdown = true
}

environments {
    development {
        quartz {
            autoStartup = false
        }
    }
}
jobs
类中,您还可以在触发器上设置
startDelay

static triggers = {
    cron name: 'myTrigger', startDelay: 5000, cronExpression: '0 15 2 * * ?'
}

嗨,杰弗里芬,谢谢你的回答。我在配置下添加文件,复制并粘贴您的设置行,但什么也没有。当我启动grails应用程序时,我在execute()方法中放置了一个printline,我看到该行被打印出来,因此出于某种原因,即使我在开发环境中并将atuostartup设置为false,它仍然会运行。我使用的是Grails2.1和quartz2版本2.2。我看到有版本2.3,我将尝试更新和查看。再次感谢Just install version 2.3同样的问题:(如果您安装了Quartz Monitor(
grails安装插件Quartz Monitor
),然后您应该能够转到
/quartz/list
,查看您配置了哪些作业以及quartz进程的状态。这可能类似于…
http://your-server.your-company.com:your-port/your app/quartz/list
Hi Geo,我使用的是quartz2,quartzmonitor似乎只适用于quartz1