常常会在Web应用中需要启动一个自己写的服务,比如说刷新主页,统计数据等,下面提供一种简单的方式.
作业类 :
通
过实现 org.quartz.job 接口 , 覆盖了 execute(JobExecutionContext context) 方法。
这
个方法可以包含我们想要执行的任何代码
- package com;
-
- import java.util.Date;
-
- import org.quartz.Job;
- import org.quartz.JobExecutionContext;
- import org.quartz.JobExecutionException;
-
- public class Job1 implements Job {
-
- public Job1() {
-
- }
-
-
- public void execute(JobExecutionContext context)
- throws JobExecutionException {
- System.out.println("job1-" + new Date());
- }
- }
-
- package com;
-
- import java.util.Date;
-
- import org.quartz.Job;
- import org.quartz.JobExecutionContext;
- import org.quartz.JobExecutionException;
-
- public class Job2 implements Job {
-
- public Job2() {
- }
-
-
- public void execute(JobExecutionContext context)
- throws JobExecutionException {
- System.out.println("job2-" + new Date());
- }
- }
package com;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class Job1 implements Job {
public Job1() {
}
public void execute(JobExecutionContext context)
throws JobExecutionException {
System.out.println("job1-" + new Date());
}
}
package com;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class Job2 implements Job {
public Job2() {
}
public void execute(JobExecutionContext context)
throws JobExecutionException {
System.out.println("job2-" + new Date());
}
}
编写quartz.properties文件,这个文件的默认名称就是
quartz.properties,如果启动项目的时候,Quartz没有在工程中找到该文件,
就会从自己的jar包下面读取其默认的
properties文件
quartz.properties
org.quartz.scheduler.instanceName
= TestScheduler
org.quartz.scheduler.instanceId = one
org.quartz.threadPool.class
= org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount
= 2
org.quartz.threadPool.threadPriority = 4
org.quartz.plugin.jobInitializer.class
= org.quartz.plugins.xml.JobInitializationPlugin
org.quartz.plugin.jobInitializer.fileName
= quartz_job.xml
然后编写quartz_job.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <quartz>
- <job>
- <job-detail>
- <name>job1</name>
- <group>job</group>
- <job-class>com.Job1</job-class>
- </job-detail>
- <trigger>
- <cron>
- <name>t1</name>
- <group>job</group>
- <job-name>job1</job-name>
- <job-group>job</job-group>
- <cron-expression>0/10 * * * * ?</cron-expression>
- </cron>
- </trigger>
- </job>
-
- <job>
- <job-detail>
- <name>job2</name>
- <group>job</group>
- <job-class>com.Job2</job-class>
- </job-detail>
- <trigger>
- <cron>
- <name>t2</name>
- <group>job</group>
- <job-name>job2</job-name>
- <job-group>job</job-group>
- <cron-expression>0/20 * * * * ?</cron-expression>
- </cron>
- </trigger>
- </job>
- </quartz>
<?xml version="1.0" encoding="UTF-8"?>
<quartz>
<job>
<job-detail>
<name>job1</name>
<group>job</group>
<job-class>com.Job1</job-class>
</job-detail>
<trigger>
<cron>
<name>t1</name>
<group>job</group>
<job-name>job1</job-name>
<job-group>job</job-group>
<cron-expression>0/10 * * * * ?</cron-expression>
</cron>
</trigger>
</job>
<job>
<job-detail>
<name>job2</name>
<group>job</group>
<job-class>com.Job2</job-class>
</job-detail>
<trigger>
<cron>
<name>t2</name>
<group>job</group>
<job-name>job2</job-name>
<job-group>job</job-group>
<cron-expression>0/20 * * * * ?</cron-expression>
</cron>
</trigger>
</job>
</quartz>
<cron-expression>0/20 * * * *
?</cron-expression>
Cron 表达式包括以下 7 个字段:秒 分 小时 月内日期 月 周内日期
年(可选字段)
意思是:从0秒开始计算,安排任务每 20 秒执行一次。
比如说现在是5点10分18秒启动的服务,它会从0秒(10分
整)开始计算,到5点10分20秒执行,那么会先执行job2,接下来过10秒执行job1,过20秒执行job2.....
在配
置文件中把jobdetail和trigger都作了定义并组合成一个job。
最后修改一下web.xml。
- <servlet>
- <servlet-name>quartz</servlet-name>
- <servlet-class>
- org.quartz.ee.servlet.QuartzInitializerServlet
- </servlet-class>
- <init-param>
- <param-name>config-file</param-name>
- <param-value>/quartz.properties</param-value>
- </init-param>
- <init-param>
- <param-name>shutdown-on-unload</param-name>
- <param-value>true</param-value>
- </init-param>
- <load-on-startup>1</load-on-startup>
- </servlet>
-
-
- 也
可以使用监听器
-
- <context-param>
- <param-name>config-file</param-name>
- <param-value>/quartz.properties</param-value>
- </context-param>
-
- <context-param>
- <param-name>shutdown-on-unload</param-name>
- <param-value>true</param-value>
- </context-param>
-
- <listener>
- <listener-class>
- org.quartz.ee.servlet.QuartzInitializerListener
- </listener-class>
- </listener>