在Grails quartz插件中创建Job(factory-bean返回null)时出错

时间:2013-05-07 15:22:10

标签: quartz-scheduler grails-plugin grails-2.0

我使用的是Grails 2.2.2(GGTS - 3.3.0M1)和Quartz插件1.0-RC7。

通过以下作业,我收到一条错误消息,指出使用'grails run-app'进行测试时作业实例化失败。如果我从控制器显式调用triggerNow(),我会看到同样的错误。错误如下:

| Error 2013-05-07 10:50:20,260 [quartzScheduler_QuartzSchedulerThread] ERROR core.ErrorLogger  - An error occured instantiating job to be executed. job= 'GRAILS_JOBS.mypkg.auth.OAuthJob'
Message: Job instantiation failed
Line | Method
->> 134 | initialize in org.quartz.core.JobRunShell
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
^   387 | run        in org.quartz.core.QuartzSchedulerThread
Caused by BeanCreationException: Error creating bean with name 'mypkg.auth.OAuthJob': factory-bean 'mypkg.auth.OAuthJobClass' returned null

我使用'grails create-job'命令创建了这个作业,该命令在grails-app / jobs / mypkg / auth / OAuthJob.groovy下添加了一个文件

package mypkg.auth

import org.quartz.JobExecutionContext
import org.quartz.JobExecutionException
//import org.grails.plugins.quartz.JobManagerService

class OAuthJob {

def AuthService
def grailsApplication

static triggers = {
    // Execute job once in 11 hours (42600 seconds)
    simple name = "OAuthTokenTrigger", repeatInterval: 426000000l
}

def group = "OAuthJobGroup"

def execute(JobExecutionContext context) throws JobExecutionException {
    try {
        log.debug("OAuthJob has been invoked, now requesting token")
        // Call AuthService get token
        AuthService.getToken(context.mergedJobDataMap)
    } catch (Throwable e) {
        throw new JobExecutionException(e.getMessage(), e)
    }
}
}

我添加了一个'compile':quartz:1.0-RC7“'依赖于BuildConfig.groovy。 我错过了什么?如果我定义了“组”并不重要,我仍然会得到错误。我没有看到任何关于为什么bean创建返回null的错误。

1 个答案:

答案 0 :(得分:0)

我认为这不是工作容器的一部分......

def grailsApplication<<< - 为什么你引用它并且从不使用它? :)

另一个主题/博客或其他一些Craptacular grails文档方法有一个关于使用你的域对象来处理ctx,spring goodness的提示。

def grailsApplication = new MyDomain().domainClass.grailsApplication
def ctx = grailsApplication.mainContext