【问题标题】:Deltaspike + Quartz + CronExpressions from custom property file来自自定义属性文件的 Deltaspike + Quartz + CronExpressions
【发布时间】: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


    【解决方案1】:

    知道了。 关键是查看 PropertyFileConfig 的 javadoc:

    1. 通过 java.util.ServiceLoader 机制自动获取 如果您有 EAR 或 您需要在 CDI 期间已经配置的值 container start 那么你也可以通过以下方式注册 PropertyFileConfig java.util.ServiceLoader 机制。没有这个配置 拿起两次它需要注释你自己的PropertyFileConfig 使用 org.apache.deltaspike.core.api.exclude.Exclude 实现。

    ServiceLoader机制要求有文件 META-INF/services/org.apache.deltaspike.core.api.config.PropertyFileConfig 包含您自己的完全限定类名 PropertyFileConfig 实现类。
    com.acme.my.own.SomeSpecialPropertyFileConfig 的实现 将如下所示:

    @Exclude
      public class SomeSpecialPropertyFileConfig implements PropertyFileConfig      {
          public String getPropertyFileName() {
              return "myconfig/specialconfig.properties"
          }
          public boolean isOptional() {
              return false;
          }
      }
    

    工作就像一个魅力

    【讨论】:

      猜你喜欢
      • 2012-02-15
      • 1970-01-01
      • 1970-01-01
      • 2016-04-09
      • 1970-01-01
      • 2014-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多