最近在开发过程中遇到这样一个需求,用户在前台页面选择机构,业务后,后台执行将业务数据打包成zip文件,但是用户的操作的时间是不确定的。quartz和timertask都是根据某一确切时间或一段时间来操作的。陷入了死循环。后来发帖和大家讨论可以这么实现:用户进行操作后,将前台数据存入一张表中,用quartz定时的去查这张表,如果这张表中有数据说明用户进行了操作,就可以进行我们的操作了。之前也没有学习过quartz,现在将一些配置帖出来,如果有错误还请大家指正。
web.xml配置如下
<servlet>
<servlet-name>QuartzInitializer</servlet-name>
<servlet-class>org.quartz.ee.servlet.QuartzInitializerServlet</servlet-class>
<init-param>
<param-name>shutdown-on-unload</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>config-file</param-name>
<param-value>quartz.properties</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
quartz.properties配置如下
#============================================================================
# Configure Main Scheduler Properties
#============================================================================
org.quartz.scheduler.instanceName = QuartzScheduler
#============================================================================
# Configure ThreadPool
#============================================================================
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 1000
#org.quartz.threadPool.threadPriority = 5
#============================================================================
# Configure Plugins
#============================================================================
org.quartz.plugin.triggHistory.class = org.quartz.plugins.history.LoggingJobHistoryPlugin
org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin
org.quartz.plugin.jobInitializer.fileName = quartz_jobs.xml
#org.quartz.plugin.jobInitializer.overWriteExistingJobs = true
#org.quartz.plugin.jobInitializer.failOnFileNotFound = true
quartz_job.xml配置如下
<?xml version="1.0" encoding="UTF-8"?>
<quartz>
<job>
<job-detail>
<name>PortalInfoJob</name>
<group>PortalInfo</group>
<job-class>com.sinosoft.application.platform.QuartzJob</job-class>
</job-detail>
<trigger>
<cron>
<name>PORTALINFO</name>
<job-name>PortalInfoJob</job-name>
<job-group>PortalInfo</job-group>
<cron-expression>0 0 1 * * ?</cron-expression>
</cron>
</trigger>
</job>
</quartz>
后台代码如下:
public class QuartzJob implements Job {
public void execute(JobExecutionContext arg0) throws JobExecutionException {
//实现代码
}
}