我正在尝试在特定时间和服务器启动时每天运行一个作业,以确保数据是最新的。不幸的是我不知道如何设置石英在使用xml文件的服务器启动时运行。这是我的日程安排:
<schedule>
<job>
<name>UpdateDashboardStats</name>
<group>UpdateDashboardStats</group>
<description>Updating Dashboard Statistics</description>
<job-class>utils.UpdateDashboardStats</job-class>
</job>
<trigger>
<cron>
<name>UpdateDashboardStats</name>
<job-name>UpdateDashboardStats</job-name>
<job-group>UpdateDashboardStats</job-group>
<!-- It will run at 1am every day -->
<cron-expression>0 0 1 * * ?</cron-expression>
</cron>
</trigger>
<trigger>
<simple>
<name>UpdateDashboardStatsStartup</name>
<job-name>UpdateDashboardStats</job-name>
<job-group>UpdateDashboardStats</job-group>
<description>Run once at startup</description>
<misfire-instruction>SmartPolicy</misfire-instruction>
<repeat-count>0</repeat-count>
<repeat-interval>10</repeat-interval>
</simple>
</trigger>
</schedule>
答案 0 :(得分:1)
我认为仅使用XML配置启动调度程序是不可能的:您还需要构建并启动调度程序的实例。只需使用以下命令以编程方式启动Scheduler:
scheduler = new StdSchedulerFactory("quartz.properties").getScheduler();
try {
scheduler.start();
} catch (SchedulerException e) {
logger.error("Error getting scheduler status", e);
}
这足以触发XML中定义的触发器(在quartz.properties中引用)。
..但是如果您正在使用容器(如Apache Tomcat),请使用Listener或Servlet仅使用XML启动Scheduler。请参阅this官方文档。
答案 1 :(得分:0)
正如zerologiko所提到的,Quartz调度程序必须运行才能选择石英xml。
您如何验证Quartz调度程序是否正在运行。
如果您的工作在预定时间运行,请提及。让它第一次运行会很容易。
因为你已经有了自己的工作。您可以将其作为单独的计划执行,不会重复。只执行一次