我正在研究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);
}

10-04 20:17