2016-07-28 160 views
1

我在Grails 3.1.9中使用@Scheduled註解,從3.1.0.RC2升級到3.1.9後,註釋的服務方法根本沒有執行。降級回到3.1.0.RC2會導致它再次工作。升級到Grails後,@ Scheduled Annotation失敗3.1.9

這裏是我的服務...

package com.mycompany.app 

import grails.transaction.Transactional 
import org.springframework.scheduling.annotation.Scheduled 

@Transactional 
class InstanceSnapshotService { 

    @Scheduled(fixedDelay = 30000L, initialDelay = 30000L) 
    void updateSnapshots() { 
     Date start = new Date() 
     log.info("Started Updating Snapshots at $start") 
     ... do stuff ... 
     log.info("Finished Updating Snapshots after ${new Date().time - start.time}ms") 
    }  
} 

這裏是我的Application.groovy ...

package com.datapriviasoftware.completesso 

... 
import org.springframework.scheduling.annotation.EnableScheduling 

@EnableScheduling 
class Application extends GrailsAutoConfiguration implements EnvironmentAware { 
    static void main(String[] args) { 
     GrailsApp.run(Application) 
    } 

    @Override 
    void setEnvironment(Environment environment) { 
    ... 
    } 
} 

就像我說的,我之前我們有這個運行了幾個星期前從Grails 3.1.0-RC2升級到Grails 3.1.9。我不確定這可能與它有什麼關係。

非常感謝您提供任何幫助。

+1

你在某處註冊'InstanceSnapshotService'嗎?您可能缺少'@ Service'插入。 – Loucher

+0

Grails根據約定註冊服務而不使用@ @ Service註解,但我嘗試添加註解以防萬一,但無濟於事。 (還是)感謝你的建議。 :-) – 10GritSandpaper

+1

只是恢復到3.1.0.RC2工作正常。所以在3.1.0.RC2和3.1.9之間'@ Scheduled'看起來有些變化。現在調查以確定在哪裏。 –

回答

2

我們使用@Scheduled的方式在3.1.7

打破了我對this grails issue發表了意見,並Graeme Rocher說把

boolean lazyInit = false

的服務。這似乎讓事情再次運作。