gpt4 book ai didi

JSF 2 + Quartz调度库

转载 作者:行者123 更新时间:2023-12-03 03:29:01 26 4
gpt4 key购买 nike

我有一个使用 JSF 2 的 Web 应用程序。在这个应用程序中,我使用一个图表库,它从 xml 文件获取数据,当有人访问该站点时,由于 jsf 2 Action,应用程序会更新 xml 文件。现在我想实现 Quartz 库(开源调度库),以更新 xml 文件而不依赖于用户操作,但我不知道如何使用 JSF 2 从 Quartz 调用操作。

提前谢谢大家。

最佳答案

一般来说,您应该实现计划逻辑,定义何时运行,并在应用程序服务器启动时初始化计划作业。

实现调度逻辑

您安排的类(class)应实现 org.quartz.Job接口(interface)并覆盖其 execute()其中包含您预定作业的逻辑。对于您的情况,这是更新 XML 文件的方法。您应该使该方法对 JSF 没有任何依赖性,以便可以在 JSF 外部调用它。

public class MyScheduledJob implements Job {

public void execute(JobExecutionContext context) throws JobExecutionException {
updateXML();
}
}

初始化并启动 Quartz

Quartz 提供了 ServletContextListenerQuartzInitializerListener允许您在应用程序服务器启动时初始化并启动 Quartz。

将此监听器添加到您的 web.xml

<listener>
<listener-class> org.quartz.ee.servlet.QuartzInitializerListener</listener-class>
</listener>

默认情况下,它将查找名为 quartz.properties 的文件在类路径中初始化 Quartz 。您可以引用this有关可配置选项的更多信息,请参阅 quartz.properties

定义哪个作业将在何时运行

您可以在 XML 文件中定义它(其架构定义可以在 here 中找到)并配置 XMLSchedulingDataProcessorPluginquartz.properties在 Quartz 初始化时加载此 XML。

例如,在quartz.properties

org.quartz.plugin.jobInitializer.class =org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin org.quartz.plugin.jobInitializer.fileNames = quartz-config.xml org.quartz.plugin.jobInitializer.failOnFileNotFound = true

然后在quartz-config.xml

<?xml version="1.0" encoding="UTF-8"?>

<job-scheduling-data
xmlns="http://www.quartz-scheduler.org/xml/JobSchedulingData"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.quartz-scheduler.org/xml/JobSchedulingData http://www.quartz-scheduler.org/xml/job_scheduling_data_1_8.xsd"
version="1.8">

<schedule>
<job>
<name>MyScheduledJob</name>
<group>MyScheduledGroup</group>
<description>Job to update XML </description>
<job-class>com.xxxx.xxxx.xxxx.MyScheduledJob </job-class>
</job>

<trigger>
<cron>
<name>midNightTrigger</name>
<job-name>MyScheduledJob</job-name>
<job-group>MyScheduledGroup</job-group>
<!-- It will run every night at 3:30 am -->
<cron-expression>0 30 3 * * ?</cron-expression>
</cron>
</trigger>
</schedule>
</job-scheduling-data>

以上内容适用于 Quartz 的最新版本 2.1 。您可以查看sample codestutorials从 Quartz 获取更多信息。

关于JSF 2 + Quartz调度库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7911695/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com