2014-01-20 55 views
2

我在grails中使用服務並從控制器中的服務獲取和設置數據,這沒有任何問題。我知道如何使用它......但是這個問題我無法解決,請幫助我,如果你知道發生了什麼問題。無法從Grails中的Quartz Job訪問任何bean

有一個QuartzJob,我從控制器的服務計劃...數據存儲在PostgreSQL中。使用所有插件和2.3.3 Grails的最新版本。在下面的代碼中,我只是想打印暱稱,但我無法獲得服務。試圖獲得bean,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.NullPointerException:無法在null對象上調用方法 getUserProfile()Error |在 org.codehaus.groovy.runtime.NullObject.invokeMethod(NullObject.java:77) 錯誤|在 org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:45) 錯誤|在 org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45) 錯誤信息|在 org.codehaus.groovy.runtime.callsite.NullCallSite.call(NullCallSite.java:32) 錯誤|在 org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45) 錯誤信息|在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) 錯誤|在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116) 錯誤|在test.TestJob $$ EOTRiFAo.execute(TestJob.groovy:27)錯誤| at test.TestJob $$ DOTRiFAo.execute(Unknown Source)Error | at test.TestJob.execute(TestJob.groovy)Error |在 org.quartz.core.JobRunShell.run(JobRunShell.java:207)Error |在 org.quartz.simpl.SimpleThreadPool $ WorkerThread.run(SimpleThreadPool.java:560) 空

回答

3

你實現Job,但這種使用插件時,是罕見的。通常,您只需在grails-app/jobs(通過手動或使用create-job腳本)創建一個名稱以「Job」結尾的類,併發生奇蹟。您是否在src/groovy中創建課程?你需要使用插件的約定來獲得依賴注入的工作。

+0

DRY是Grails的魔法......我認爲有一些簡單的方法可以解決這個問題。我看到的所有例子,使用服務沒有任何問題。 – user3213516

+0

http://stackoverflow.com/questions/10640480/grails-2-x-service-injection-in-groovy-src這是如何得到DI。但我認爲還有其他解決方案。 – user3213516