当前位置: 首页 > 知识库问答 >
问题:

无法从Grails中的Quartz作业访问任何bean

益光亮
2023-03-14

我在grails中使用服务,并从控制器中的服务获取和设置数据,没有问题。我知道如何使用它。。。但是这个问题我解决不了,如果你知道出了什么问题,请帮助我。

有一个QuartzWork,我从控制器的服务时间表...数据存储在PostgreSQL中。使用所有插件和2.3.3 Grails的最新版本。在下面的代码中,我只想打印昵称,但我无法获得服务。试图得到豆,def grailsApplication但没有成功。

Grails的石英插件: 1.0-RC11

class TestJob implements Job{
    def userService

    void execute(org.quartz.JobExecutionContext t) {         
        try {
            println userService.getUserProfile("farko").username
        } catch (Exception ex){
            println ex.printStackTrace()
        }
    }
}

我得到这个错误

错误|java.lang.空指针异常:不能调用空对象的方法getUserProfile()错误|在org.codehaus.groovy.runtime.NullObject.invoke方法(NullObject.java:77)错误|在org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:45)错误|在org.codehaus.groovy.runtime.callsite.CallSiteArray.default呼叫(CallSiteArray.java:45)错误|在org.codehaus.groovy.runtime.callsite.NullCallSite.call(NullCallSite.java:32)错误|在org.codehaus.groovy.runtime.callsite.CallSiteArray.default呼叫(CallSiteArray.java:45)错误|在org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)错误|在org.codehaus.groovy.runtime.callsite.AbstractCallSite. call(AbstractCallSite. java: 116)错误|在测试。执行(TestWork. groovy: 27)错误|在测试。执行(未知来源)错误|在测试。执行(TestWork. groovy)错误|在org. quitz. core。JobRunShell. run(JobRunShell. java: 207)错误|at org. QUITZ. Simplified.SimpleThreadpool$WorkerThread. run(SimpleThreadpool. java: 560)null

共有1个答案

翁阳曜
2023-03-14

您可以实现作业,但在使用插件时,这种情况很少见。通常,您只需在grails app/jobs中创建一个名为“job”的类(手动或使用create job脚本),神奇的事情就发生了。您是否在src/groovy中创建类?您需要使用插件的约定来实现依赖注入。

 类似资料:
  • 在这些工作中,我想从另一个应用程序访问spring-security安全bean方法。 这是我的应用程序结构。 -core -webapp -jobs-app 但是,所有的工作我都得这么做。 有没有一种方法可以让所有的作业作为一个特定的用户运行?可能是什么配置?

  • 在我的java应用程序中,我有一个Quartz作业,它每天运行一次,处理特定的任务。在我的方法中只有以下内容: 是一个实例变量。

  • 我有这份工作: 作业应该每小时运行一次。我以为问题是cronexpression。这就是为什么我把它改成上面的表达式。在我有这个表达之前: null

  • 石英2.2 我在运行时动态创建和调度Quartz作业,并将Quartz配置为JDBC-Job-Store。这些作业需要在应用程序执行之间保持不变。在作业执行期间,我需要访问完整的Spring上下文(Spring管理的bean和JPA事务)。 然而,如果我试图将任何东西自动加入到我的工作中,那么我会得到一个错误,比如…“通过字段MyAutowiredField表示的不满足的依赖项” 我想不通。我已经

  • 我正在使用开发一个Spring Boot项目,最近我添加了来为每个请求添加traceId。但是,当作业被系统自动触发时,它不能像在控制器或服务中调用action时那样传播traceId。我是否必须自定义sleuth日志记录或其他东西来将traceId传播到其他服务? 示例:当我通常调用controller时,sleuth工作良好,并且我已经将traceId传播到其他服务 但是,当我的作业被自动触发