ПримерВыражение
Каждую среду в полночьdayOfWeek = "Wed"
Каждую среду в полночьsecond = "0", minute = "0", hour = "0", dayOfMonth = "*", month = "*", dayOfWeek = "Wed", year = "*"
Каждый будний день в 6:55minute = "55", hour = "6", dayOfWeek = "Mon — Fri"
Каждый будний день в 6:55 по парижскому времениminute = "55", hour = "6", dayOfWeek = "Mon — Fri", timezone = "Europe/Paris"
Каждую минуту каждого часа каждого дняminute = "*", hour = "*"
Каждую секунду каждой минуты каждого часа каждого дняsecond = "*", minute = "*", hour = "*"
Каждые понедельник и среду через 30 секунд после полудняsecond = "30", hour = "12", dayOfWeek = "Mon, Fri"
Каждые пять минут в течение часаminute = "*/5", hour = "*"
Каждые пять минут в течение часаminute = "0,5,10,15,20,25,30,35,40,45,50,55", hour = "*"
Последний понедельник декабря в 3 часа дняhour = "15", dayOfMonth = "Last Mon", month = "Dec"
За три дня до конца каждого месяца в 1 час дняhour = "13", dayOfMonth = "–3"
Каждый второй час в течение дня, начиная с полудня каждый второй вторник каждого месяцаhour = "12/2", dayOfMonth = "2nd Tue"
Каждые 14 минут в рамках часа в 1 и 2 часа ночиminute = "*/14", hour="1, 2"
Каждые 14 минут в рамках часа в 1 и 2 часа ночиminute = "0,14,28,42,56", our = "1,2"
Каждые 10 секунд в рамках минуты, начиная с 30 секундsecond = "30/10"
Каждые 10 секунд в рамках минуты, начиная с 30 секундsecond = "30,40,50"
<p>Декларативное создание таймера</p>

Таймеры могут быть созданы автоматически в контейнере во время развертывания на основе метаданных. Контейнер создает таймер для каждого метода, аннотированного @javax.ejb.Schedule или @Schedule (или XML-эквивалент в дескрипторе развертывания ejb-jar.xml). По умолчанию каждая аннотация @Schedule соответствует одному постоянному таймеру, но вы можете также определить непостоянные таймеры.

В листинге 8.3 показан компонент StatisticsEJB, в котором определены несколько методов. Метод statisticsItemsSold() создает таймер, который будет вызывать этот метод каждый первый день месяца в 5:30 утра. Метод generateReport() создает два таймера (с помощью аннотации @Schedule): один из них срабатывает каждый день в 2 часа ночи, а другой — каждую среду в 2 часа дня. Метод RefreshCache() создает непостоянный таймер, который будет обновлять кэш каждые десять минут.

Листинг 8.3. Statistics EJB, регистрация четырех таймеров

@Stateless

public class StatisticsEJB {

··@Schedule(dayOfMonth = "1", hour = "5", minute = "30")

··public void statisticsItemsSold() {

····//…

··}

··@ Schedules({

····@ Schedule(hour = "2"),

····@ Schedule(hour = "14", dayOfWeek = "Wed")

··})

··public void generateReport() {

····//…

··}

··@Schedule(minute = "*/10", hour = "*", persistent = false)

··public void refreshCache() {

····//…

··}

}

<p>Программное создание таймера</p>
Перейти на страницу:

Похожие книги