1

我正在研究 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。谢谢。更新:现在它起作用了。但是如何暂停并重新启动呢?

4

1 回答 1

0

没有“暂停”和“重启”之类的东西,但是您可以取消使用 @Schedule 声明的基于注释的计时器,然后重新创建它。您必须将调度程序表达式存储在某处。

你可以这样做:

@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);
}
于 2020-02-17T14:52:10.893 回答