2011-03-01 62 views
0

我見過大量的帖子引用石英作業不應該調用控制器。我正在使用Grails來使用salesforce.com對REST API的新支持。夜間工作將使用該API將客戶數據從我們的專有數據庫更新到salesforce環境。有一個會話是使用登錄ID創建的。我應該從Quartz job調用Grails控制器來進行REST API調用嗎?

所以...我想使用grails作業插件給我cron風格的方式來調用與服務交互的控制器,以便通過httpclient發送REST API調用來更新/插入我們的對象在salesforce.com的土地上。

這似乎是從Grails中的作業區域調用控制器的合法原因。

會喜歡任何反饋或其他方法(在Grails中)來處理這個問題。 thx,David

回答

1

你爲什麼要從Quartz作業調用控制器?這看起來很奇怪。 用戶grails服務。 Quartz插件具有依賴注入,所以它應該很容易調用服務方法。

0

即使您從石英任務調用控制器,也將無法訪問會話,因爲沒有經過身份驗證的用戶。如果你想讓一些複雜的業務邏輯把它放在一個服務中,然後從你的工作中調用它。在石英作業中聲明服務與控制器中的聲明完全相同。

+0

其實,有一個sessionId取su – 2011-03-02 05:51:04

0

我覺得這個問題是有效的。我有類似的要求。我使用了grails rest插件。 Grails控制器的操作,可將一些報告數據導出爲ex​​cel,並通過電子郵件將其每天發送到電子郵件列表。因此,我創建在控制器的方法:

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

然後除了exportToExcel()在myService.groovy實現中,我創建一個額外的方法如下:

DEF runExportToExcelJob(){ withHttp(URI:「http://localhost:9092/myProject/ 「){ 得到的回報(路徑: 'myController的/ exportToExcel') }}

最後,在我的Grails石英工作,我調用myService.runExportToExcelJob()。

它工作正常。但我也懷疑,如果還有其他方式讓Grails工作休息一下。任何反饋真的很感激。