grails асинхронный загрузчик

Можно ли использовать службу асинхронно в классе начальной загрузки grails? Я пытаюсь сделать следующее в grails-2.0.4 и grails-executor-plugin, но появляется только первое сообщение журнала:

class BootStrap {

def myService

def init = { servletContext ->

    log.info("Bootstrapping")

    runAsync {
        log.info("Doing myService async ")
        myService.doSomething()
    }

}

Там нет сообщения об ошибке, просто нет вывода из второго оператора журнала. Заранее большое спасибо!

 Houcem Berrayana18 июн. 2012 г., 09:28
Как насчет начала потока? Я помню, что я делал это в проекте, но я не помню, пользовался ли я услугами класса или нет?
 Wolf Wetzel18 июн. 2012 г., 10:17
Да, это работает - см. Мой код выше в комментарии! Спасибо
 Wolf Wetzel18 июн. 2012 г., 09:56
Да уж! Хорошая идея: я попробовал следующее: def th = Thread.start {log.info (& quot; Автосогревание отпечатков асинхронно) myService.doSomething ()}
 Houcem Berrayana18 июн. 2012 г., 10:02
Это работает или нет?

Ответы на вопрос(1)

Решение Вопроса

УдалитьrunAsync закрытие - это не подходящее место для этого. Вы можете использовать закрытия какproduction а такжеdevelopment здесь для разных сред:

class BootStrap {

def myService

def init = { servletContext ->
    log.info("Bootstrapping")
    development {
        log.info("Doing myService async ")
        myService.doSomething()
    }
}

class MyService {
    def doSomething() {
        runAsync {
            // executed asynchronously
        }
    }
}
 18 июн. 2012 г., 10:01
@WolfWetzel Я обновил свой ответ.runAsyc не работает в Bootstrap, потому что он не расширен. Расширяются только домены, контроллеры и сервисы. Проверьте мое решение и не запускайте собственные темы.
 Wolf Wetzel18 июн. 2012 г., 10:18
Большое спасибо - ваше предложение работает. Я поместил runAsync-Closure в свой класс обслуживания, и я в порядке с этим!

Ваш ответ на вопрос