Я использую EJB 3.1 и JBoss-EAP-6.4, и я хочу установить некоторые динамические параметры часа, минуту и секунду EJB планировщика следующим образом:Параметрирования EJB планировщика с Schedule Expression
непараметрического кода - которые работают в 30-й секунде каждые 5 минут:
@Singleton
@Startup
public class TriggerJob {
@EJB
//some db injections
@PostConstruct
public void onStartup() {
try {
preparation();
} catch (CertificateVerificationException e) {
e.printStackTrace();
}
}
@Schedule(second = "30", minute = "*/5", hour = "*", persistent = false)
public void preparation() {
//my scheduled tasks
}
}
выше код выполняется правильно.
Динамический Параметрический код - который должен работать в 30-й секунде каждые 5 минут:
@Singleton
@Startup
public class TriggerJob {
@EJB
//some injections
private boolean runningFlag = false;
@Resource
private TimerService timerService;
public void setTimerService(TimerService timerService) {
this.timerService = timerService;
}
@Timeout
public void timerTimeout() {
try {
preparation();
} catch (CertificateVerificationException e) {
e.printStackTrace();
}
}
@PostConstruct
private void postCunstruct() {
timerService.createCalendarTimer(createSchedule(),new TimerConfig("EJB timer service timeout at ",false));
}
private ScheduleExpression createSchedule() {
ScheduleExpression expression = new ScheduleExpression();
expression.hour("*")
.minute("*/5")
.second("30");
return expression;
}
public void preparation(){
// my scheduled tasks
}
}
Приведенный выше код не выполняется правильно, как правило, он выполняет несколько раз в секунду.
Кроме того, я читал некоторые другие вопросы, которые не помогли мне:
Dynamic parameters for @Schedule method in an EJB 3.x
Using the Timer Service - The Java EE 6 Tutorial
Любая помощь будет оценена.
Вы можете отладить и проверить объект «Таймер» возвращенное «createCalendarTimer», она содержит ScheduleExpression и сравнить является ли это создано в соответствии с требованиями или нет. Кроме того, проверьте, не активны ли другие таймеры. –
Уважаемый @Nayan Wadekar, повторный запуск разрешен ответом, однако возникает новая проблема: планировщик не запускается при запуске –
Не думайте, что с данным кодом возникает проблема. Вы пытались отлаживать, правильно ли выражение, метод тайм-аута вызывается правильно, postconstruct и т. Д. –