【发布时间】:2016-04-22 22:29:19
【问题描述】:
我已经从一个属性文件中配置了 CronExpression,但是这个属性文件是 apache-deltaspike.properties,它位于 .jar 文件中。我需要从我的自定义配置文件中获取 cron 表达式:
import org.apache.deltaspike.core.api.config.PropertyFileConfig;
public class myOwnPropertyFileConfig implements PropertyFileConfig {
private static final long serialVersionUID = 1L;
@Override
public String getPropertyFileName() {
return "cfg/myOwnPropFile.properties";
}
@Override
public boolean isOptional() {
return false;
}
}
myOwnPropFile.properties
deltaspike_ordinal=500
property1=value1
property2=value2
QuartzJob=0 25 17 * * ?
工作:
@Scheduled(cronExpression = "{QuartzJob}")
public class MyQuartzJob implements Job {
//job code
}
当我设置这个属性时一切正常: QuartzJob=0 25 17 * * ? 在 apache-deltaspike.properties 中,但是当我在自己的属性文件中设置它时,我得到:
java.lang.IllegalStateException: No config-value found for config-key: QuartzJob
研究,我发现我的属性文件是在 Quartz 初始化之后立即加载的,这就解释了原因。现在,我在 Deltaspike 文档中读到,可以在我的属性文件中使用 deltaspike_ordinal 随时加载我的属性文件。于是我试了下,好像忽略了deltaspike_ordinal=500,一直报错。
那么,有人知道如何解决这个问题吗? Deltaspike 文档也谈到了 ConfigSource 等,但不是很清楚,也没有例子。
提前致谢!
【问题讨论】:
标签: java properties quartz-scheduler cronexpression deltaspike