2012-04-20 9 views
11

Estoy ejecutando mi aplicación dentro de Glassfish. Traté de crear un trabajo, que se ejecutará cada 5 minutos como este:Java EE Scheduler no se llama

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

Sin embargo, nunca se llama. Traté de ver un mensaje del registrador y establecer un punto de depuración, pero no se invocó. Utilicé esta documentación para la sintaxis: http://download.oracle.com/javaee/6/tutorial/doc/bnboy.html

También traté de especificar los minutos exactamente. Desafortunadamente sin éxito tampoco.

+0

Tenga en cuenta que no es necesario el 'anotación @ LocalBean' aquí. –

Respuesta

18

creo que por defecto "hora" a 0 (medianoche), así que puede que tenga que especificar como:

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

tienes toda la razón. ¡Muchas gracias! En segundo lugar, la hora y el minuto tienen el valor predeterminado "0" en lugar de "*" como las otras propiedades. – Daniel

+0

Me solucionó, pero esto es extraño ya que desde el documento entendí que minute = "*/5" debería establecer explícitamente la hora en "*". Pero hey .... – Kemoda