我已经从一个属性文件中配置了 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 等,但不是很清楚,也没有例子。
提前致谢!