我应该从Quartz作业调用Grails控制器进行REST API调用吗?

时间:2011-03-01 07:19:37

标签: rest grails quartz-scheduler

我看过一些帖子,称石英作业不应该调用控制器。我正在使用Grails来使用salesforce.com对REST API的新支持。每晚工作将使用该API将客户数据从我们的专有数据库更新到salesforce环境。有一个使用登录ID创建的会话。

所以...我想使用grails的jobs插件给我一个cron风格的方式来调用与服务交互的控制器,以便通过httpclient发送REST API调用来更新/ upsert我们的对象salesforce.com土地。

这似乎是从Grails中的作业区域调用控制器的合理原因。

会喜欢任何反馈或替代方法(在Grails内)来处理这个问题。 thx,大卫

3 个答案:

答案 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工作进行休息。任何反馈都非常感谢。