2016-07-28 1 views
1

Я использую аннотации @Scheduled в Grails 3.1.9, а метод аннотированной службы не выполняется вообще после обновления с 3.1.0.RC2 до 3.1.9. Переход к 3.1.0.RC2 заставляет его работать снова.@ Последовательная аннотация завершается после обновления до Grails 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, отлично работает. Таким образом, кажется, что что-то изменилось с помощью '@ Scheduled' между 3.1.0.RC2 и 3.1.9. Исследуйте сейчас, чтобы определить, где. –

ответ

2

, как мы использовали @Scheduled прервала 3.1.7

Я сделал комментарий по this grails issue и Graeme Rocher сказал поставить

boolean lazyInit = false

в службе. Кажется, что все снова работает.