2012-04-20 17 views
11

Sto eseguendo la mia applicazione all'interno di Glassfish. Ho provato a creare un lavoro, che verrà eseguito ogni 5 minuti in questo modo:Java EE Scheduler non è chiamato

@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()"); 
    } 
} 

Tuttavia, non viene mai chiamato. Ho provato a vedere un messaggio dal registratore e impostare un punto di debug ma non verrà chiamato. Ho usato questa documentazione per la sintassi: http://download.oracle.com/javaee/6/tutorial/doc/bnboy.html

Ho anche provato a specificare esattamente i minuti. Purtroppo anche senza successo.

+0

Si noti che non è necessario l'@ LocalBean' annotazione 'qui. –

risposta

18

Penso default "ora" a 0 (mezzanotte), quindi potrebbe essere necessario specificare come:

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

hai assolutamente ragione. Molte grazie! In secondo luogo, ora e minuto hanno il valore predefinito "0" anziché "*" come le altre proprietà. – Daniel

+0

Mi ha risolto, ma questo è strano dal momento che dal doc ho capito che minute = "*/5" dovrebbe impostare esplicitamente l'ora su "*". Ma hey .... – Kemoda