Il Timer Service è un servizio del Container che consente di schedulare l'esecuzione dei metodi di tutti i tipi di session bean eccetto il tipo stateful.
Possiamo schedulare il timeout di un Timer in diversi modi: come calendario, a singola azione dopo un tempo specificato,
o come task che si ripete ad intervalli di tempo.
Un Timer può essere di due tipi: programmatico o automatico. Un Timer programmatico viene creato utilizzando l'interfaccia TimerService, mentre un Timer automatico viene creato con il deploy di EJB che contengono metodi marcati con annotation java.ejb.Schedule o java.ejb.Schedules.
Lo scheduling basato su calendario può essere utilizzato sia con i Timer di tipo programmatico che automatico. Lo scheduling di tipo calendario prevede l'uso dei seguenti attributi:
| Attributo | Descrizione |
|---|---|
second |
Valore che esprime secondi [0-59], ad esempio second="20". |
minute |
Esprime minuti [0-59], ad esempio minute="20". |
hour |
Esprime ore [0-23], ad esempio hour="15". |
dayOfWeek |
Esprime il giorno della settimana [0-7], in notazione letterale [Sun, Mon, Tue, Wed, Thu ,Fri, Sat], ad esempio dayOfWeek="4" o dayOfWeek="Mon" (I valori 0 e 7 si riferiscono a Sunday). |
dayOfMonth |
Esprime i giorni del mese [1-31], ad esempio dayOfMonth="20". |
month |
Esprime i mesi [1-12], in notazione letterale [Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec], ad esempio month="1" omonth="Jan". |
year |
Esprime l'anno in quattro cifre, ad esempio year="2016". |
Per il giorno del mese esistono delle particolarità. I valori da -7 a -1 indicano i giorni che mancano alla fine del mese, per esempio 3 giorni alla fine del mese: dayOfMonth="-3". La parola Last consente di specificare l'ultimo giorno del mese: dayOfMonth="Last". Sono possibili inoltre combinazioni usando gli insiemi di parole: [1st, 2nd .. Last] [Sun, Mon .. Sat], ad esempio il secondo lunedi del mese: dayOfMonth="2nd Mon".
"*" specifica l'opzione "qualsiasi valore", ad esempio possiamo scrivere:
dayOfWeek="*"
per ogni giorno della settimana. Con la virgola possiamo poi definire una lista di valori per un attributo, ad esempio con hour="4,9-17,22" intendiamo un task da eseguire alle 4 del mattino, ogni ora tra le 9 e le 17 (il trattino specifica un range con gli estremi inclusi) e alle 22.
Un altro carattere speciale interessante è lo slash che vincola un attributo ad avere un inizio ed un intervallo. Nell'espressione x/y, x rappresenta il punto di inizio e y l'intervallo, ad esempio minute="*/10" specifica ogni 10 minuti in un'ora e "*" in questa posizione equivale al valore 0 (inizio dell'ora).
Se vuoi aggiornamenti su Development inserisci la tua email nel box qui sotto: