How should I cancel EAP5 ejb3 timers whenever the server performs a shutdown?
Issue
I am trying to cancel EAP5 ejb3 timers whenever the server performs a shutdown
I have tried to create the following eap5 timer with a cancel in a @PreDestro annotated method ie:
@Stateless
@Depends({ "jboss.ejb:service=EJBTimerService" })
public class MyEAP5TimerBean implements MyEAP5TimerLocal {
private static final String INFO = MyEAP5TimerBean.class.getName();
static final AtomicLong counter = new AtomicLong();
private static final Logger log = Logger.getLogger(MyEAP5TimerBean.class);
@Resource
private SessionContext sessionCtx;
@Override
public void startTimer() {
TimerService timerService = sessionCtx.getTimerService();
log.info(INFO + " timerService=" + timerService);
timerService.createTimer(5000L, 5000L, INFO);
log.info("created timer " + INFO);
}
@PreDestroy
public void stopTimer() {
TimerService timerService = sessionCtx.getTimerService();
log.info(INFO + " timerService=" + timerService);
Collection<Timer> timers = timerService.getTimers();
for (Timer timer : timers) {
if (timer.equals(INFO)) {
timer.cancel();
log.info("cancelled timer " + INFO);
}
}
}
@Timeout
public void ejbTimeout(Timer timer) {
long value = counter.incrementAndGet();
log.info("timer " + INFO + " " + value);
}
}
But this does not work.
Environment
Red Hat JBoss Enterprise Application Platform 5.2.0
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase of over 48,000 articles and solutions.
Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.
