3

我正在尝试每天在特定时间和服务器启动时运行一项工作,以确保数据是最新的。不幸的是,我不知道如何使用 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>
4

2 回答 2

1

我认为仅使用 XML 配置启动调度程序是不可能的:您还需要构建启动调度程序的实例。只需使用以下方式以编程方式启动调度程序:

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 启动调度程序。请参阅官方文档。

于 2013-11-13T23:33:01.133 回答
0

正如zerologiko 提到的,必须运行Quartz 调度程序才能选择quartz xml。

您如何验证 Quartz 调度程序正在运行。

您能否提及您的工作是否在预定时间运行。第一次运行它很容易。

因为你已经有了你的工作。您可以将其作为单独的调度执行,不会重复。只执行一次

于 2013-11-14T08:34:04.943 回答