java如何在EJB调度中设置计时器值?
目前,我正在使用以下配置来安排我的计划程序
@Schedule(second ="1/10", minute = "*", hour = "*")
private void scheduleUser() {
try {
new UserFacade().insertUserInfo();
} catch (Exception e) {
logger.error("Error in : " + e);
}
}
现在我想在运行时设置计时器值,而不是用硬编码的方式。假设我有一个bean调用Property
,它有一个名为frequency
的字段
现在我想为EJB
调度器设置new Property().getFrequency()
之类的值
有没有什么方法可以做到像下面这样的事情
@Schedule(second =new Property().getFrequency(), minute = "*", hour = "*")
private void scheduleUser() {
try {
new UserFacade().insertUserInfo();
} catch (Exception e) {
logger.error("Error in : " + e);
}
}
# 1 楼答案
与Vegard提交的答案类似,除了这个答案使用ScheduleExpression。 更多信息Beginning Java EE 7 book
# 2 楼答案
不需要注释。必须使用编程计时器(Java 7,EE7):
详见https://docs.oracle.com/javaee/7/tutorial/ejb-basicexamples004.htm