roy*_*osa 2 jsf quartz-scheduler jsf-2
我有一个使用JSF 2的Web应用程序.在这个应用程序中,我使用的是一个从xml文件获取数据的图表库,当有人访问该站点时,应用程序会更新xml文件,因为jsf 2 Action.现在我想实现Quartz库的开源调度库,更新xml文件而不依赖于用户操作,但我不知道如何使用JSF 2从Quartz调用Action.
先谢谢你们.
一般来说,您应该实现计划的逻辑,定义它将运行的时间,并在应用程序服务器启动时初始化计划的作业.
您的预定类应该实现org.quartz.Job接口并覆盖其execute() ,其中包含您的预定作业的逻辑.在您的情况下,它是更新XML文件的方法.您应该使此方法对JSF没有任何依赖性,以便可以在JSF外部调用它.
public class MyScheduledJob implements Job {
public void execute(JobExecutionContext context) throws JobExecutionException {
updateXML();
}
}
Run Code Online (Sandbox Code Playgroud)
Quartz提供了一个ServletContextListener名为QuartzInitializerListener,允许您在应用程序服务器启动时初始化并启动Quartz.
将此侦听器添加到您的 web.xml
<listener>
<listener-class> org.quartz.ee.servlet.QuartzInitializerListener</listener-class>
</listener>
Run Code Online (Sandbox Code Playgroud)
默认情况下,它将查找quartz.properties在类路径中调用的文件以初始化Quartz.您可以参考此有关可用配置选项的更多信息quartz.properties
您可以在XML文件中定义它(可以在此处找到它的模式定义)并配置 XMLSchedulingDataProcessorPlugin以在quartz.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>
Run Code Online (Sandbox Code Playgroud)
以上所有内容均为Quartz最新版本2.1.您可以查看Quartz 的示例代码和教程以获取更多信息.
| 归档时间: |
|
| 查看次数: |
3256 次 |
| 最近记录: |