使用代码调度作业很简单,但我想根据文件夹的内容安排作业。
例如:
我希望“\ MyApp \ Jobs \”中的文件夹包含一些XML文件,这些文件将包含有关要安排的IJob的信息。
问题是我希望监视此文件夹的更改(对于XML文件),当找到新文件时,将使用XML中包含的信息安排新的IJob。
我应该怎么做才能实现这样的机制?
由于
答案 0 :(得分:0)
类 java.io.File 有一些 listFiles()方法,它们将列出目录的内容。如果要限制以某种方式返回的文件名,请使用 FileFilter 或 FilenameFilter 。在“睡眠”循环中执行此操作,例如60秒,以避免咀嚼所有CPU。
希望这有帮助。
答案 1 :(得分:0)
您不需要使用文件观察器来监视文件中的更改。
在创建quartz属性文件时,它有选项as
org.quartz.plugin.jobInitializer.scanInterval = 5
扫描xml文件的更改。因此,在上述情况下,它每5秒扫描一次
我的完整quartz.property文件如下
org.quartz.scheduler.instanceName = MyScheduler
org.quartz.threadPool.threadCount = 3
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
org.quartz.plugin.jobInitializer.class =org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin
org.quartz.plugin.jobInitializer.fileNames =C:/Users/Admin/Documents/NetBeansProjects/QXmlTest/src/java/quartz-config.xml
org.quartz.plugin.jobInitializer.failOnFileNotFound =true
org.quartz.plugin.jobInitializer.scanInterval = 5
org.quartz.plugin.jobInitializer.wrapInUserTransaction= 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>AJob</name>
<group>AGroup</group>
<description>Print a welcome message</description>
<job-class>mypackage.SchedulerJob</job-class>
</job>
<trigger>
<cron>
<name>dummyTriggerName</name>
<job-name>AJob</job-name>
<job-group>AGroup</job-group>
<!-- It will run every 5 seconds -->
<cron-expression>0/5 * * * * ?</cron-expression>
</cron>
</trigger>
</schedule>
</job-scheduling-data>
请注意我使用的是石英java api。