2014-01-20 2 views
2

Grails에서 서비스를 사용 중이며 컨트롤러의 서비스에서 데이터를 가져오고 설정하는데 문제가 없다. 나는 그것을 사용하는 방법을 안다. 그러나 내가 해결할 수없는이 문제는, 당신이 잘못되어 가고있는 것을 안다면 나를 도울 수있다.Grails의 Quartz Job에서 Bean에 접근 할 수 없다.

컨트롤러의 서비스로부터 QuartzJob, I 스케쥴이 있습니다 ... 데이터는 PostgreSQL에 저장됩니다. 모든 플러그인과 2.3.3 Grails의 마지막 버전 사용. 아래의 코드에서 닉네임을 인쇄하고 싶지만 서비스를받을 수 없습니다. bean을 얻으려고 시도했지만 grailsApplication은 성공했지만 성공하지 못했습니다. | 내가이 오류를

오류가

class TestJob implements Job{ 
    def userService 

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

1.0-RC11 : 석영에 대한

Grails의 플러그인은 석영이다 java.lang.NullPointerException : null 객체에 대해 getUserProfile()을 호출 할 수 없습니다. 오류 | at org.codehaus.groovy.runtime.NullObject.invokeMethod (NullObject.java:77) 오류 | org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call (PogoMetaClassSite.java:45) 오류 | at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall (CallSiteArray.java:45) 오류 | (org) .comhtml. at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall (CallSiteArray.java:45) 오류 | at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call (AbstractCallSite.java:108) 오류 | at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call (AbstractCallSite.java:116) 오류 | test.TestJob $$ EOTRiFAo.execute (TestJob.groovy : 27) 오류 | at test.TestJob $$ DOTRiFAo.execute (알 수없는 소스) 오류 | at test.TestJob.execute (TestJob.groovy) 오류 | at org.quartz.core.JobRunShell.run (JobRunShell.java:207) 오류 | 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

관련 문제