我正在研究EJB,并通过创建如下所示的简单EJB来测试自动功能。
我希望它一旦部署即可自动运行。
import javax.ejb.Schedule;
import javax.ejb.Stateless;
@Stateless
public class TestAuto {
@Schedule(minute="*",hour="15")
public void testprint()
{
System.out.println("AutoWrite");
}
}
我在eclipse上运行它并成功部署了它,但是在控制台上看不到任何输出。有人可以帮忙吗?我使用了wildfly 11,java 1.8和ejb 3.2。谢谢。
更新:现在可以了。但是如何暂停并重新启动呢?
最佳答案
没有“暂停”和“重新启动”之类的东西,但是您可以取消使用@Schedule声明的基于注释的计时器,然后重新创建它。您将不得不将schedulerexpression存储在某个地方。
您可以执行以下操作:
@Resource
private TimerService timerService;
public ScheduleExpression cancelTimer() {
Timer currentTimer = timerService.getTimers().iterator().next();
ScheduleExpression scheduleExpression = currentTimer.getSchedule();
currentTimer.cancel();
return scheduleExpression;
}
public void restartTimer(ScheduleExpression scheduleExpression) {
timerService.createCalendarTimer(scheduleExpression);
}