Использование службы таймера EJB - PullRequest
6 голосов
/ 13 декабря 2011

У меня есть небольшой кусочек кода, который я пытаюсь выполнить с помощью службы таймера.

У меня проблемы с поиском хорошего примера или учебника в Интернете. Учебное пособие по Oracle охватывает слишком много слишком быстро, чтобы я мог понять основную утилиту, которая мне нужна. Я просто хочу, чтобы он выполнялся сразу после запуска программы, а затем каждый час после этого.

Как будет выглядеть таймер выборки?

Ответы [ 2 ]

13 голосов
/ 13 декабря 2011

Этого проще всего добиться с помощью @Singleton @Schedule и дополнительных @PostConstruct для вызова метода непосредственно после построения:

package com.example;

import javax.annotation.PostConstruct;
import javax.ejb.Schedule;
import javax.ejb.Singleton;

@Singleton
public class SomeBackgroundJob {

    @PostConstruct
    @Schedule(hour="*/1", minute="0", second="0", persistent=false)
    public void run() {
        // Do your job here.
    }

}

Разница лишь в том, что он запускается не каждый час после запуска, а только каждый час после запуска. Думаю, это не должно иметь значения?

0 голосов
/ 09 июня 2017

Если вы хотите, чтобы ваш таймер работал каждый час, заключите в контейнер час, используя день недели. Вот пример

@Schedule(dayOfWeek = "*", hour = "*/1", persistent = false)
public void run() {
    // Do your job here.
}
...