import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.annotation.Resource;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import javax.ejb.Timeout;
import javax.ejb.Timer;
import javax.ejb.TimerService;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Logger;

@Singleton
@Startup
public class TimerBean {

	private static final Logger log = Logger.getLogger(TimerBean.class.toString());
	@Resource private TimerService timerService;

	@Timeout
	public void scheduler(Timer timer) {
		log.info("Timeout of timer " + timer.getInfo());
	}

	@PostConstruct
	public void create() {
		log.info("PostConstruct: timerService.getTimers.size() = " + timerService.getTimers().size());
		Date currentTime = new Date();
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss");
		timerService.createTimer(0, 5000, "created at [" + simpleDateFormat.format(currentTime) + "]");
	}

	@PreDestroy
	public void stop() {
		log.info("PreDestroy: timerService.getTimers.size() = " + timerService.getTimers().size());
		for (Timer timer : timerService.getTimers()) {
			log.info("Stopping timer: " + timer.getInfo());
			timer.cancel();
		}
	}
}
