grails async зареждане

Възможно ли е да се използва услуга асинхронно в класа за зареждане на 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()
    }

}

Няма съобщение за грешка, просто няма изход от втория отчет за журнал. Благодаря много предварително!


person Wolf Wetzel    schedule 18.06.2012    source източник
comment
Какво ще кажете да започнете тема? Спомням си, че направих това в проект, но не помня дали използвах клас услуги или не?   -  person Houcem Berrayana    schedule 18.06.2012
comment
да! Добра идея: Опитах следното: def th = Thread.start { log.info(Autowarming Imprints async) myService.doSomething() }   -  person Wolf Wetzel    schedule 18.06.2012
comment
Да, работи - вижте моя код по-горе в коментара! Благодаря ти   -  person Wolf Wetzel    schedule 18.06.2012


Отговори (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
        }
    }
}
person Tomasz Kalkosiński    schedule 18.06.2012
comment
@WolfWetzel Актуализирах отговора си. runAsyc не работи в Bootstrap, защото не е разширен. Разширени са само домейни, контролери и услуги. Проверете моето решение и не започвайте собствени теми. - person Tomasz Kalkosiński; 18.06.2012
comment
Благодаря много - вашето предложение работи. Поставих runAsync-Closure в моя сервизен клас и съм добре с това! - person Wolf Wetzel; 18.06.2012