Я пытаюсь создать простую работу таймера с ejb3.1, чтобы выполнить некоторую очистку. Мой боб выглядит следующим образом:Метод, аннотированный с @Schedule, не запланирован
@Singleton
@Startup
public class ExpirationSchedulerBean {
private final Logger logger = Logger.getLogger(ExpirationSchedulerBean.class);
@Schedule(second = "*/5", minute = "*", hour = "*", persistent = false)
public void cleanup() {
logger.warn("Schedule Timer fired - " + new Date());
}
@PostConstruct
public void startup() {
logger.warn("I AM IN STARTUP()");
}
}
Мои файлы журнала показывают, что нет ничего плохого в регистраторе, а «Я в STARTUP()» печатается нормально. Однако запланированный метод никогда не запускается.
Я попытался создать Timer
вместо этого, используя:
@Resource
private TimerService timerService;
@PostConstruct
public void startup() {
logger.warn("I AM IN STARTUP()");
timerService.createIntervalTimer(0, 5000, new TimerConfig());
}
@Timeout
public void sayHello() {
logger.warn("Timeout from timer "+new Date());
}
Но сервер, кажется, не нравится, что тоже, я получаю JBAS014239: Служба таймера отключена. Добавьте его в раздел ejb конфигурации сервера, чтобы включить его. Как получить метод, отмеченный @Schedule
, для запуска каждые пять секунд?
EDIT: Я использую JBoss 6,4
Я думаю, что это не разрешено в вашем профиле. По крайней мере, для v7 он работал для меня при загрузке дистрибутива «все» и запускал сервер, используя: './standalone.sh -server-config = standalone-preview.xml' – spa
@spa Хм, это похоже на правду ! Однако, я думаю, я должен был бы просто включить его в свой standalone.xml? – Pphoenix
Да, конечно - это просто все. Это не то, что вы хотите большую часть времени. Но вы можете найти эту конфигурацию для таймера. – spa