Quartz任务调度在web中的简单使用

常常会在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());
	}
}

 

 

编写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>

 

<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>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值