2012-04-20 10 views
11

Używam aplikacji wewnątrz Glassfish. Próbowałem utworzyć zadanie, które będzie wykonywane co 5 minut w następujący sposób:Java EE Scheduler nie nazywa się

@Startup 
@Singleton 
@LocalBean 
public class TempFolderCleaner { 
    private final static Logger LOGGER = LoggerFactory.getLogger(TempFolderCleaner.class); 

    @EJB 
    private ReportStatusDao reporStatusDao; 

    @Schedule(minute = "*/5") 
    public void removeOldReports() { 
     LOGGER.debug("start removeOldReports()"); 
    } 
} 

Jednak nigdy nie jest wywoływany. Próbowałem zobaczyć komunikat z rejestratora i ustawić punkt debugowania, ale nie zostanie on wywołany. użyłem tej dokumentacji do składni: http://download.oracle.com/javaee/6/tutorial/doc/bnboy.html

Próbowałem również określić liczbę minut dokładnie. Niestety bez powodzenia.

+0

pamiętać, że nie potrzebują '@ LocalBean' adnotacji tutaj. –

Odpowiedz

18

myślę „godzina” domyślnych 0 (do północy), więc może trzeba określić ją jako:

@Schedule(minute = "*/5", hour="*") 
+0

masz absolutną rację. Wielkie dzięki! Po drugie, godzina i minuta mają domyślną wartość "0" zamiast "*", podobnie jak inne właściwości. – Daniel

+0

To rozwiązało mnie, ale to jest dziwne, ponieważ z dokumentu dowiedziałem się, że minuta = "*/5" powinna jawnie ustawić godzinę na "*". Ale hej .... – Kemoda