2011-03-01 3 views
0

저는 석영 작업이 컨트롤러를 호출해서는 안된다는 내용의 게시물을 보았습니다. Salesforce.com의 REST API에 대한 새로운 지원을 사용하기 위해 Grails를 사용하고 있습니다. 야간 작업은 해당 API를 사용하여 독점적 인 DB에서 Salesforce 환경으로 고객 데이터를 업데이트합니다. 로그인 ID를 사용하여 생성 된 세션이 있습니다.REST API 호출을 위해 Quartz 작업에서 Grails 컨트롤러를 호출해야합니까?

그래서 ... grails 용 작업 플러그인을 사용하여 httpclient를 통해 REST API 호출을 보내서 객체를 업데이트/업서 트하기 위해 서비스와 상호 작용하는 컨트롤러를 호출하는 cron 스타일의 방법을 제공하고 싶습니다. salesforce.com에서.

Grails의 작업 영역에서 컨트롤러를 호출하는 것이 합법적 인 이유 인 것 같습니다.

이 문제를 해결하기위한 피드백이나 다른 접근법 (Grails 내)을 좋아할 것입니다. thx, David

답변

1

왜 Quartz 작업에서 컨트롤러를 호출 했습니까? 이것은 어색해 보인다. 사용자 grails 서비스. Quartz Plugin에는 의존성 삽입이 있으므로 서비스 메소드를 호출하기 쉬워야한다.

0

쿼츠 작업에서 컨트롤러를 호출하더라도 인증 된 사용자가 없으므로 세션에 액세스 할 수 없습니다. 복잡한 비즈니스 로직을 서비스에 넣고 싶다면 비즈니스에서 호출하십시오. 쿼츠 작업의 서비스 선언은 컨트롤러의 선언과 정확히 동일합니다.

+0

사실, 세션 ID가 있습니다. –

0

나는 그것이 유효한 질문이라고 생각합니다. 나는 비슷한 요구 사항을 가지고 있었다. 나는 grails rest 플러그인을 사용했다. 일부 보고서 데이터를 엑셀로 내보내고 매일 이메일 링리스트에 이메일로 보내는 grails 컨트롤러 작업. 그래서 제어부에있어서 생성 (URI

데프 runExportToExcelJob() { withHttp : exportToExcel() myService.groovy에서 구현 게다가 그런

def exportToExcel() { 
     myService.exportToExcel(response) 
    } 

를, I는 아래로 추가적인 방법을 창조 "http://localhost:9092/myProject/ ") { 반환 GET (경로 : 'MYCONTROLLER/exportToExcel') } } 마지막으로

그리고, 내 Grails의 석영 작업에서, 나는 myService.runExportToExcelJob를 호출().

잘 작동합니다. 그러나 grails job에서 rest call을 만드는 또 다른 방법이 있다면 나도 궁금해한다. 모든 의견은 정말로 감사하겠습니다.

관련 문제