我试着每天在特定的时间和服务器启动时运行一个作业,以确保数据是最新的。不幸的是,我不知道如何将quartz设置为使用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>发布于 2013-11-14 07:33:01
我认为仅使用XML配置启动调度器是不可能的:您还需要构建并启动调度器的一个实例。只需使用以下命令以编程方式启动Scheduler:
scheduler = new StdSchedulerFactory("quartz.properties").getScheduler();
try {
scheduler.start();
} catch (SchedulerException e) {
logger.error("Error getting scheduler status", e);
}这足以触发您的XML中定义的触发器(在quartz.properties中引用)。
XML如果您使用的是容器(如Apache Tomcat),请使用侦听器或Servlet来启动仅使用的调度程序。请参阅this官方文档。
发布于 2013-11-14 16:34:05
正如zerologiko提到的,Quartz调度器必须运行才能选择quartz xml。
您如何验证Quartz调度程序是否正在运行。
你能告诉我你的作业是否在预定时间运行吗?让它第一次运行是很容易的。
因为你已经有工作了。您可以将其作为单独的计划执行,该计划将不会重复。只执行一次
https://stackoverflow.com/questions/19943473
复制相似问题