Accessing grails application config from a quartz job

依然范特西╮ 提交于 2019-12-07 23:40:00

问题


Using grails 2.4.2, quartz:1.0.2, I'm trying to gain access to configuration properties

class MyJob {
  def grailsApplication
  int propA
  def MyJob() {
    propA = grailsApplication.config.foo.bar.propAVal
  }
  ...
}

grailsApplication, however, doesn't get injected, and is null.

Can't access any bean from Quartz Job in Grails supposedly relates to this, but I don't really see how the marked answer resolves the OP's question :-/

help? 10x


回答1:


The problem is probably that you are accessing grailsApplication in constructor, where it's not injected yet.

I recommend to dump useless class property int propA and do it this way:

  def grailsApplication

  def execute() {
    def propA = grailsApplication.config.foo.bar.propAVal         
    ... 
    //use propA for something
  }



回答2:


import grails.util.Holders

class MyJob {
    def grailsApplication = Holders.getGrailsApplication()
    int propA
    def MyJob() {
        propA = grailsApplication.config.foo.bar.propAVal
    }
    ...
}

In this way you can access 'grailsApplication' from a Quartz job or even from any groovy file inside "/src" folder.




回答3:


For those using grails 3.x the type of grailsApplication now has to be specified explicitly. E.g. instead of:

def grailsApplication

you need to use:

import grails.core.GrailsApplication
...
GrailsApplication grailsApplication


If you don't you'll receive the following compilation error:

The return type of java.lang.Object getGrailsApplication() in namespace.classnameJob is incompatible with grails.core.GrailsApplication in grails.plugins.quartz.QuartzJob



来源:https://stackoverflow.com/questions/24992721/accessing-grails-application-config-from-a-quartz-job

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!