Я следовал 16" rel="nofollow noreferrer">примеру Адама Бина, чтобы сделать таймер , но это не работает должным образом. Я создал @Singleton
EJB с помощью метода, помеченного знаком @Schedule
. Приложение развернуто на wildfly 11. У меня тут две проблемы. Во-первых, мой таймер регистрирует каждую секунду, а не каждую минуту. Вторая проблема заключается в том, что каждый раз, когда запускается таймер, я получаю сообщение об ошибке.
Может кто подскажет, что я делаю не так? Может, я просто слепой и не вижу этого.
Мои занятия:
import javax.ejb.Schedule;
import javax.ejb.Singleton;
import java.util.logging.Logger;
@Singleton
public class DeviceTrackerCronJob {
private static final Logger LOG = Logger.getLogger(DeviceTrackerCronJob.class.getName());
private long counter;
@Schedule(second = "*", minute = "*/1", hour = "*", info = "Every Minute!")
public void execute() {
LOG.info("### --- FAKING SOME CONTENT " + counter++);
}
}
Я получаю следующее сообщение:
12: 42: 03,025 ИНФОРМАЦИЯ [de.klemensmorbe.tracking.DeviceTrackerCronJob] (EJB по умолчанию - 1) ### --- ПОДДЕЛЬНОЕ СОДЕРЖАНИЕ 575 12: 42: 04,040 ОШИБКА [org.jboss.as.ejb3.timer] (EJB по умолчанию - 1) WFLYEJB0020: Ошибка при вызове тайм-аута для таймера: [id = a797d1ca-e550-41e4-bfe7-46066f7b24b3 timedObjectId = web.web.DeviceTrackerCronJob auto-timer?: false persistent?: true timerService = org.jb3 .timerservice.TimerServiceImpl @ c39b6bb initialExpiration = null intervalDuration (в миллисекундах) = 0 nextExpiration = среда, 3 января, 12:42:05 UTC 2018 timerState = IN_TIMEOUT info = null]: java.lang.RuntimeException: WFLYEJB0343: Невозможно вызвать метод тайм-аута, потому что метод null не является методом тайм-аута в org.jboss.as.ejb3 // org.jboss.as.ejb3.timerservice.TimedObjectInvokerImpl.callTimeout (TimedObjectInvokerImpl.java:83) в org.jboss.as.ejb3 // org.jboss .as.ejb3.timerservice.TimedObjectInvokerImpl.callTimeout (TimedObjectInvokerImpl.java:109) в org.jboss.as.ejb3 // org.jboss.as.ejb3.timerservice.CalendarTim erTask.invokeBeanMethod (CalendarTimerTask.java:66) на org.jboss.as.ejb3 // org.jboss.as.ejb3.timerservice.CalendarTimerTask.callTimeout (CalendarTimerTask.java:53) на org.jboss.as.ejb org.jboss.as.ejb3.timerservice.TimerTask.run (TimerTask.java:160) at org.jboss.as.ejb3 // org.jboss.as.ejb3.timerservice.TimerServiceImpl $ Task $ 1.run (TimerServiceImpl.java : 1220) на org.wildfly.extension.request-controller // org.wildfly.extension.requestcontroller.RequestController $ QueuedTask $ 1.run (RequestController.java:497) на java.base / java.util.concurrent.ThreadPoolExecuter.r (ThreadPoolExecutor.java:1167) в java.base / java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:641) в java.base / java.lang.Thread.run (Thread.java:844) в org.jboss.threads // org.jboss.threads.JBossThread.run (JBossThread.java:320)
мой таймер регистрирует каждую секунду, а не каждую минуту.