我想这个标题是很自我解释的。我有份工作:
import org.apache.deltaspike.scheduler.api.Scheduled;
import org.quartz.Job;
@Scheduled(cronExpression = "0 0/1 * * * ?")
public class JobA implements Job {
//job code
}每分钟运行一次。我想从外部设置那个cron表达式,即一个配置文件。我在用Deltaspike,我找不到实现它的方法。我正在考虑一个类JobDispatcher,从哪里创建作业并将cron表达式设置为它,但我在DeltaSpike文档中没有看到任何线索。
提前感谢!
发布于 2015-03-20 20:44:34
使Cron表达式成为一个私有的最终静态常量,从一个配置文件中导出它的值,并在注释中使用它。
发布于 2015-04-28 20:14:12
最后,我通过设置调度程序的JobDispatch.java使用了Quartz,因此,作为Quartz规范状态,使用来自Quartz的所有库,而不是Deltaspike调度器模块。到目前为止,我认为我完全独立于deltaspike-调度程序-模块-api-1.2.1和deltaspike-调度程序-模块-impl 1.2.1,但问题是,我没有。一旦一切正常工作,我决定清理一下,并摆脱这两个库。然后我意识到我的构建路径中有它们,所以我首先从那里删除了它们,最后从磁盘中删除了它们。令我惊讶的是,当我再次尝试运行我的应用程序时,出现了一些例外,实际上,NullPointerExceptions来自@Inject变量。我没有做更深入的研究,但我让这些小人生活在建筑的道路上,因为它就是这样运作的。
我的想法是,在某种程度上,这些小人通过工作来维持CDI的生存,不管所有的cronjobs都是从Quartz libs那里拿来的。
如果有人能在这里透露点什么,欢迎光临。
谢谢!
更新4/2016
Deltaspike1.6现在支持这种功能:可配置的CRON表达式
更新2- 4/2016
对于Quartz cron表达式,配置并不那么简单,请查看容器启动时的配置以获得更多信息。
https://stackoverflow.com/questions/29174069
复制相似问题