2013-02-19 41 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

相关问题