package com.test.enterprise; import java.util.Calendar; import java.util.Date; import javax.annotation.PostConstruct; import javax.annotation.Resource; import javax.ejb.ScheduleExpression; import javax.ejb.Singleton; import javax.ejb.Startup; import javax.ejb.Timeout; import javax.ejb.Timer; import javax.ejb.TimerConfig; import javax.ejb.TimerService; @Singleton @Startup public class TimerIssue { @Resource public TimerService timerService; @PostConstruct public void init() { TimerConfig config = new TimerConfig(null, false); ScheduleExpression expression = new ScheduleExpression(); Calendar start = Calendar.getInstance(); start.set(2013, Calendar.JUNE, 3, 2, 0); expression.hour("0-12").month("*").dayOfMonth("3").minute("0/5").second("0").start(start.getTime()); Timer timer = timerService.createCalendarTimer(expression, config); System.out.println("Current time: " + new Date()); System.out.println("Next execution time: " + timer.getNextTimeout()); } @Timeout public void timeout(Timer timer) { System.out.println(new Date()); } }