2013-02-19 88 views
1

我是一名java開發人員,並開始使用舊版Grails應用程序。我有一個控制器類和一些java類。控制器具有啓動/停止java類中描述的任務的方法。我正在使用ScheduledExecutorService如何讓Grails在啓動時執行控制器方法?

問題是,每次重新部署應用程序時,我必須調用http://application/controller/start以使其初始化調度程序。我希望這個controller.start()方法在te應用程序啓動時被調用一次。我該如何做到這一點,還是有更好的方法來做到這一點?

回答

5

我會建議把這個方法放在一個服務中。在應用程序啓動後,您可以從控制器和Bootstrap.groovy中調用該服務。您也可以在服務上使用標準@PostConstruct來啓動流程。

您的業務方法應該位於不在控制器中的服務中。

如果你確實需要使用控制器,從BootStrap.groovy中試試這個:

new Controller().start() 

我沒有包膜,以測試它,但不應該有問題吧。

+0

是的,調用像BootStrap.groovy中那樣的Controller方法將會起作用。 – hsan 2013-02-19 09:16:31

+0

其實商業邏輯是在java類中,控制器只是爲了控制它們。問題是,當我把邏輯放在一個服務中時,我得到了一個奇怪的grails-melody異常,當Java邏輯處於相同的邏輯時,這種異常不會發生。我無法找到發生這種情況的原因,並決定堅持使用Java,因爲我幾乎不瞭解Grails或Groovy – svz 2013-02-19 11:14:46