quartz 定时任务

package quartz.counter;

/**
 * @ClassName: CounterJob
 * @Description: TODO
 * @author Zhou Shengshuai
 * @date 2014年9月19日 下午2:33:45
 *
 */
public class CounterJob {
	public void count() {
		System.out.println("Counter Job...");
	}
}

package quartz.mapper;

/**
 * @ClassName: MapperJob
 * @Description: TODO
 * @author Zhou Shengshuai
 * @date 2014年9月19日 下午2:34:07
 *
 */
public class MapperJob {
	public void map() {
		System.out.println("Mapper Job...");
	}
}
package quartz;

import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
import org.quartz.Job;
import org.quartz.JobBuilder;
import org.quartz.JobDataMap;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.TriggerBuilder;

import quartz.counter.CounterJob;
import quartz.mapper.MapperJob;

/**
 * @ClassName: CounterMapper
 * @Description: TODO
 * @author Zhou Shengshuai
 * @date 2014年9月19日 下午2:35:36
 *
 */
public class CounterMapper implements Job {
	private Scheduler scheduler = null;

	private CounterJob counterJob = null;
	private MapperJob mapperJob = null;

	private String cronExpression = null;

	public void setCounterJob(CounterJob counterJob) {
		this.counterJob = counterJob;
	}

	public void setMapperJob(MapperJob mapperJob) {
		this.mapperJob = mapperJob;
	}

	public void setCronExpression(String cronExpression) {
		this.cronExpression = cronExpression;
	}

	public void setScheduler(Scheduler scheduler) {
		this.scheduler = scheduler;
	}

	public void initial() {
		JobDetail jobDetail = JobBuilder.newJob(CounterMapper.class).withIdentity("Counter", "Mapper").build();

		jobDetail.getJobDataMap().put("counter", counterJob);
		jobDetail.getJobDataMap().put("mapper", mapperJob);

		CronTrigger cronTrigger = TriggerBuilder.newTrigger().withIdentity("Counter", "Mapper").withSchedule(CronScheduleBuilder.cronSchedule(cronExpression)).build();

		try {
			scheduler.scheduleJob(jobDetail, cronTrigger);
		} catch (SchedulerException e) {
			e.printStackTrace();
		}
	}

	@Override
	public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
		JobDataMap jobDataMap = jobExecutionContext.getMergedJobDataMap();

		CounterJob counter = (CounterJob) jobDataMap.get("counter");
		counter.count();

		MapperJob mapper = (MapperJob) jobDataMap.get("mapper");
		mapper.map();
	}

	public void destroy() {

	}
}

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd">

	<!-- 配置CounterMapper -->
	<bean id="CounterMapper" class="quartz.CounterMapper" init-method="initial" destroy-method="destroy" scope="singleton">
		<property name="scheduler" ref="Scheduler" />

		<property name="counterJob" ref="CounterJob" />
		<property name="mapperJob" ref="MapperJob" />

		<property name="cronExpression" value="*/1 * * * * ?" />
	</bean>

	<!-- 配置Scheduler -->
	<bean name="Scheduler" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
	</bean>

	<!-- 配置Counter -->
	<bean name="CounterJob" autowire="no" class="quartz.counter.CounterJob">
	</bean>

	<!-- 配置Mapper -->
	<bean name="MapperJob" autowire="no" class="quartz.mapper.MapperJob">
	</bean>
</beans>

package quartz;

import org.springframework.context.support.FileSystemXmlApplicationContext;

/**
 * @ClassName: Main
 * @Description: TODO
 * @author Zhou Shengshuai
 * @date 2014年9月19日 下午3:06:44
 *
 */
public class Main {

	public static void main(String[] args) {
		// 装载程序
		final FileSystemXmlApplicationContext context = new FileSystemXmlApplicationContext("spring-quartz.xml");

		// 添加钩子
		Runtime.getRuntime().addShutdownHook(new Thread() {
			@Override
			public void run() {
				// 销毁实例
				context.getBeanFactory().destroySingletons();
			}
		});
	}
}
时间: 2024-09-17 15:06:52

quartz 定时任务的相关文章

Spring+Quartz定时任务

最近研究站内搜索,因为要定时的更新索引库,看了看Spring+Quartz定时任务,用它完成,定时创建索引的任务!! 给大家分享一下helloworld的简单例子,大家可以根据实际情况变化使用 业务方法类 Java代码 package com.task; /** * 业务方法 * */ public class TestJob { public void execute() { try { System.out.println("我的业务方法被调用了---------!"); } ca

关于spring+quartz定时任务问题!!

问题描述 关于spring+quartz定时任务问题!! 怎么把定时任务写在表中,项目启动加载表数据,一个定时任务对应一个时间,在类中该怎么调用?数据写在一张表中.有人做过这种项目吗?求教啊.. 解决方案 关于spring和quartz的使用,可参考:http://git.oschina.net/wangkang/llsfw 希望能够帮到你.

khj-spring整合quartz定时任务报错,请大神们解救

问题描述 spring整合quartz定时任务报错,请大神们解救 web.xml中的配置 spring_mvcorg.springframework.web.servlet.DispatcherServlet contextConfigLocationclasspath:applicationContext spring_mvc/ applicationContext.xml的配置 <!-- 要调用的工作类 --> <!-- 定义调用对象和调用对象的方法 --> <!-- 调

quartz 定时任务被挂起问题

问题描述 场景: 一个quartz定时任务,定时调用一个方法,方法里面通过多数据源从三个数据源ds1, ds2, ds3,获取数据,然后将这批数据插入另一个数据源 ds4的表中,再将这批数据从 ds4中查出来进行业务分析, 用的c3p0 连接池, 报错:[下面有贴出来] 同时 数据源 ds1 数据库出现异常, 报错后,数据源 ds1, ds2, ds3 的数据不能同步到 ds4 了,ds4的业务也不在执行,定时任务被挂起.. 这种场景 有可能是什么原因 引起定时任务被挂起的啊? WARN [co

j2ee项目中quartz定时任务的疑问?

问题描述 请问在j2ee项目中可以设置多个定时任务吗?若可以是不是要考虑用多线程来实现定时任务?因为我在操作项目的同时有可能定时任务也在执行,并发操作了.疑惑中....请亲们指点迷津!!!!注(定时任务用的是spring的quartz框架)? 问题补充:hao117 写道 解决方案 这样是不行的,因为Quartz是和spring分离的你的类都需要自己去注入,而且你的services不应该写到一起去啊建议把定时任务类,写在单独的类中自己写个Utils类 里面定义个static 的Applicati

最流行的java后台框架spring quartz定时任务_java

配置quartz 在spring中需要三个jar包: quartz-1.8.5.jar.commons-collections-3.2.1.jar.commons-logging-1.1.jar 首先要配置我们的spring.xml xmlns 多加下面的内容. xmlns:task="http://www.springframework.org/schema/task"  然后xsi:schemaLocation多加下面的内容. http://www.springframework.

Spring集成Quartz定时任务框架介绍和Cron表达式详解

原文地址:http://www.cnblogs.com/obullxl/archive/2011/07/10/spring-quartz-cron-integration.html 在JavaEE系统中,我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等.我们可以使用java.util.Timer结合java.util.TimerTask来完成这项工作,但时调度控制非常不方便,并且我们需要大量的代码.使用Quartz框架无疑是非常好的选择,并且与Spring可以非常方便的

quartz 定时任务-问个问题 quartz 在Linux下 定时任务不执行是个什么情况!

问题描述 问个问题 quartz 在Linux下 定时任务不执行是个什么情况! 数据库 在Linux下 ! 应用在Windows下 如果数据库在Windows下 定时任务正常,反之不行!

springmvc中实现quartz定时任务(每分钟的第3秒执行任务调度方法)

1:实现触发器,最大的问题是jar包的处理(*.jar定时jar和sourcecodesource code): 此处,最关键的jar为第二个,名字最长. maven依赖: <dependency> <groupId>org.apache.servicemix.bundles</groupId> <artifactId>org.apache.servicemix.bundles.spring-context-support</artifactId>

【JAVA秒会技术之搞定Quartz定时任务】Quartz在Spring中的集成与应用

  Quartz在Spring中的集成与应用   一.Quqrtz简介     Quartz是一个完全由Java编写的开源任务调度的框架,通过触发器设置作业定时运行规则,控制作业的运行时间.主要用来执行定时任务,如:定时发送信息.定时生成报表等等. 简而言之,Quartz是一个定时器组件,是可以整合Spring使用的一个定时器.     二.Quqrtz的配置文件     1.在maven中引入: <dependency> <groupId>org.quartz-scheduler