我看过一些帖子,称石英作业不应该调用控制器。我正在使用Grails来使用salesforce.com对REST API的新支持。每晚工作将使用该API将客户数据从我们的专有数据库更新到salesforce环境。有一个使用登录ID创建的会话。
所以...我想使用grails的jobs插件给我一个cron风格的方式来调用与服务交互的控制器,以便通过httpclient发送REST API调用来更新/ upsert我们的对象salesforce.com土地。
这似乎是从Grails中的作业区域调用控制器的合理原因。
会喜欢任何反馈或替代方法(在Grails内)来处理这个问题。 thx,大卫
答案 0 :(得分:1)
为什么要从Quartz作业调用控制器?这看起来很尴尬。 用户grails服务。 Quartz插件具有依赖注入,因此应该很容易调用服务方法。
答案 1 :(得分:0)
即使您从石英任务调用控制器,您也无法访问会话,因为没有经过身份验证的用户。如果您想制作一些复杂的业务逻辑,请将其置于服务中,然后从您的工作中调用它。在石英作业中声明服务与控制器中的声明完全相同。
答案 2 :(得分:0)
我觉得问题是有效的。我有类似的要求。我用grails rest插件。一种grails控制器操作,可将一些报告数据导出到excel中,并每天通过电子邮件将其发送到电子邮件列表。所以我在控制器中创建了一个方法:
def exportToExcel() {
myService.exportToExcel(response)
}
然后除了myService.groovy中的exportToExcel()实现之外,我创建了另一个方法,如下所示:
def runExportToExcelJob(){ withHttp(uri:“http://localhost:9092/myProject/”){ return get(path:'myController / exportToExcel') } }
最后,在我的grails quartz工作中,我调用了myService.runExportToExcelJob()。
工作正常。但我也很想知道,如果还有另一种方式可以通过grails工作进行休息。任何反馈都非常感谢。