我想在此作业中使用DeltaSpike数据模块动态运行方法。
我正在使用EJB创建一个动态作业,但是DeltaSpike数据模块需要一个@RequestScoped EntityManager,并且由于EJB作业而崩溃。
“范围类型javax.enterprise.context.RequestScoped没有活动上下文。”
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.ejb.*;
import javax.inject.Inject;
@Startup
@Singleton
public class Scheduler {
@Resource
private TimerService timerService;
@Inject
private DAO dao;
@Inject
private Worker worker;
@PostConstruct
public void init() {
Integer interval = this.dao.getInterval().intValue();
ScheduleExpression scheduleExpression = new ScheduleExpression().hour("*").minute(interval);
this.timerService.createCalendarTimer(scheduleExpression);
}
@Timeout
public void execute() {
this.worker.work();
}
}
我希望每隔20、30或60分钟每小时运行一次此工作,这取决于我从数据库获取的时间间隔。如何使用DeltaSpike调度程序模块执行此操作?我可以使用EJB吗?