Вопрос по bootstrapping, grails – grails асинхронный загрузчик

1

Можно ли использовать службу асинхронно в классе начальной загрузки 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 Berrayana
Как насчет начала потока? Я помню, что я делал это в проекте, но я не помню, пользовался ли я услугами класса или нет? Houcem Berrayana
Да уж! Хорошая идея: я попробовал следующее: def th = Thread.start {log.info (& quot; Автосогревание отпечатков асинхронно) myService.doSomething ()} Wolf Wetzel
Да, это работает - см. Мой код выше в комментарии! Спасибо Wolf Wetzel

Ваш Ответ

1   ответ
2

Удалить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
        }
    }
}
@WolfWetzel Я обновил свой ответ.runAsyc не работает в Bootstrap, потому что он не расширен. Расширяются только домены, контроллеры и сервисы. Проверьте мое решение и не запускайте собственные темы.
Большое спасибо - ваше предложение работает. Я поместил runAsync-Closure в свой класс обслуживания, и я в порядке с этим! Wolf Wetzel

Похожие вопросы