`

spring集成quartz。

 
阅读更多

spring的基础文件配置

 

1、applicationContext.xml

 

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:task="http://www.springframework.org/schema/task"
	xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd   http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd   http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd   http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
	http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd">

	<!-- This will automatically locate any and all property files you have 
		within your classpath, provided they fall under the META-INF/spring directory. 
		The located property files are parsed and their values can then be used within 
		application context files in the form of ${propertyKey}. -->

	<context:property-placeholder location="classpath*:META-INF/spring/*.properties" />
	<context:spring-configured />
	<task:annotation-driven />
	<context:component-scan base-package="com.mogenesis">
		<context:exclude-filter expression="org.springframework.stereotype.Controller"
			type="annotation" />
	</context:component-scan>
	<bean class="org.apache.commons.dbcp.BasicDataSource"
		destroy-method="close" id="dataSource">
		<property name="driverClassName" value="${database.driverClassName}" />
		<property name="url" value="${database.url}" />
		<property name="username" value="${database.username}" />
		<property name="password" value="${database.password}" />
	</bean>

	<bean class="org.springframework.orm.jpa.JpaTransactionManager"
		id="transactionManager">
		<property name="entityManagerFactory" ref="entityManagerFactory" />
	</bean>

	<tx:annotation-driven transaction-manager="transactionManager" />
	<bean
		class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
		id="entityManagerFactory">
		<property name="dataSource" ref="dataSource" />
		<property name="persistenceXmlLocation" value="classpath*:/META-INF/persistence-spring.xml" />
		<property name="loadTimeWeaver">
			<bean
				class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver" />
		</property>
	</bean>

</beans>
 

 

 

2

编写job

package com.mogenesis.mobileadplatform.scheduling;

import java.io.Serializable;

import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.StatefulJob;
import org.springframework.scheduling.quartz.QuartzJobBean;

/**
 * @author :xiaofancn
 * @version :2011-12-22 上午11:00:00
 * 
 */
public class ExampleJob extends QuartzJobBean implements StatefulJob,
		Serializable {
	private static final long serialVersionUID = 1L;
	@Override
	protected void executeInternal(JobExecutionContext context)
			throws JobExecutionException {
		
		JobDataMap jobDataMap = context.getJobDetail().getJobDataMap();
		System.out.println(ExampleJob.class);
		System.out.println("记忆时间" + jobDataMap.get("PreviousFireTime"));
		System.out.println("================================================");
		// 本次计划任务的开始结束时间
		System.out.println(context.getTrigger().getPreviousFireTime());
		// throw new JobExecutionException();
		System.out.println(context.getTrigger().getNextFireTime());
		// 上次任务的开始时间和本次任务的结束时间
		System.out.println(context.getPreviousFireTime());
		System.out.println(context.getNextFireTime());
		System.out.println("================================================");
		jobDataMap.put("PreviousFireTime", context.getNextFireTime());

	}
}
 

 

 

 

 

 

3、quartz的属性配置文件 

quartz.properties

#default config
org.quartz.scheduler.instanceName = DefaultQuartzScheduler
org.quartz.scheduler.rmi.export = false
org.quartz.scheduler.rmi.proxy = false
org.quartz.scheduler.wrapJobExecutionInUserTransaction = false

#ThreadPool config
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 10
org.quartz.threadPool.threadPriority = 5
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true
org.quartz.jobStore.misfireThreshold = 60000
#jobStore RAM
#org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
#jobStore Database
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
org.quartz.jobStore.tablePrefix = QRTZ_ 
org.quartz.jobStore.dataSource = qzDS 
 

 

4、quartz的配置文件

applicationContext-quartz.xml

 

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:task="http://www.springframework.org/schema/task"
	xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd   http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd   http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd   http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
	http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd">

	<bean name="exampleJob" class="org.springframework.scheduling.quartz.JobDetailBean">
		<!--requestsRecovery属性为true,则当Quartz服务被中止后,再次启动任务时会尝试恢复执行之前未完成的所有任务 -->
		<property name="requestsRecovery" value="true" />
		<property name="jobClass"
			value="com.mogenesis.mobileadplatform.scheduling.ExampleJob" />
		<property name="jobDataAsMap">
			<map>
				<entry key="timeout" value="5" />
			</map>
		</property>
	</bean>


	<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
		<property name="jobDetail" ref="exampleJob" />
		<!-- run every morning at 6 AM -->
		<property name="cronExpression" value="1/5 * * * * ?" />
	</bean>

	<!-- 另一个事务管理器, Jdbc单数据源事务 -->
	<bean id="quartzTransactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
	</bean>

	<!-- Scheduler -->
	<!-- <property name="waitForJobsToCompleteOnShutdown" value="true" /> 这个是可选,QuartzScheduler 
		启动时更新己存在的Job,这样就不用每次修改targetObject后删除qrtz_job_details表对应记录了 <property name="overwriteExistingJobs" 
		value="true" /> <property name="transactionManager" ref="quartzTransactionManager" 
		/> -->


	<bean id="scheduler"
		class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="autoStartup" value="true" />
		<property name="waitForJobsToCompleteOnShutdown" value="true" />
		<property name="transactionManager" ref="quartzTransactionManager" />
		<property name="exposeSchedulerInRepository" value="true" />
		<!-- 这个是必须的,QuartzScheduler 延时启动,应用启动完后 QuartzScheduler 再启动 -->
		<property name="startupDelay" value="10" />
		<property name="applicationContextSchedulerContextKey" value="applicationContext" />
		<property name="configLocation" value="classpath:META-INF/quartz/quartz.properties" />
		<property name="triggers">
			<list>
				<ref bean="cronTrigger" />
			</list>
		</property>
	</bean>

</beans>
 

 

4、使用quartz提供的sql文件,初始化我们的PostgreSQL数据库

F:\quartz-1.8.5\quartz-1.8.5\docs\dbTables

分享到:
评论

相关推荐

    spring集成quartz集群配置

    首先,理解Spring集成Quartz的核心在于Spring的Job接口和Quartz的Scheduler。Spring提供了`org.springframework.scheduling.quartz.JobDetailBean`来创建Job,`org.springframework.scheduling.quartz....

    spring 集成quartz 用数据库实现quartz的集群

    【Spring集成Quartz定时任务与数据库实现集群详解】 在企业级应用中,定时任务的管理是必不可少的一部分,Spring框架提供了与Quartz的集成,使得我们可以方便地创建和管理定时任务。Quartz是一款强大的、开放源代码...

    spring集成quartz所需文件

    标题 "spring集成quartz所需文件" 指的是将 Spring 框架与 Quartz 进行整合,以利用 Quartz 的定时任务功能。这种集成使得开发者可以在 Spring 环境下方便地管理调度任务,实现灵活的定时任务逻辑。 在描述中提到 ...

    Spring集成Quartz调度框架.pdf

    ### Spring集成Quartz调度框架详解 #### 一、Quartz调度框架概述 Quartz是一个开源的、成熟的作业调度框架,其主要目标是在Java应用程序中提供简单而强大的作业调度能力。Quartz支持作业按时间间隔(如每天、每周...

    spring集成quartz 任务调度

    Spring集成Quartz是一款高效的任务调度框架,用于在Java应用程序中执行计划、周期性的任务。Quartz与Spring的结合,使得我们可以充分利用Spring的依赖注入(DI)和AOP特性,简化了任务调度的复杂性。 首先,Quartz...

    Spring集成Quartz的代码示例

    以上就是Spring集成Quartz的基本步骤。通过这种方式,你可以利用Spring的IoC和AOP特性,结合Quartz的调度能力,实现高度可配置的定时任务。在实际项目中,你可能还需要处理任务的并发控制、异常处理、任务的持久化等...

    定时调度-Spring集成Quartz

    通过Spring集成Quartz,开发者可以方便地在Java应用中实现复杂的定时任务调度。理解Quartz的核心组件、配置方式以及如何与Spring协作,是成功部署和维护定时任务的关键。同时,合理利用CronTrigger的灵活性,可以...

    spring集成quartz

    Spring集成Quartz是一款高效、灵活的任务调度框架,用于在Java应用程序中执行定时任务。Quartz是开源项目,提供了丰富的API和强大的调度功能,而Spring框架则以其强大的依赖注入(DI)和面向切面编程(AOP)能力闻名...

    Spring集成quartz配置.xml

    此资源为配置文件示例,Spring集成quartz的配置。

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

    Spring集成Quartz定时任务框架是Java开发中常用的一种任务调度工具,它可以帮助开发者在特定时间执行重复或一次性任务。Quartz作为一个开源的作业调度框架,提供了丰富的API来创建、调度和管理作业。本文将深入探讨...

    Spring集成Quartz定时任务框架介绍.docx

    ### Spring集成Quartz定时任务框架介绍 #### 一、引言 在现代JavaEE应用程序开发过程中,定时任务是一项常见的需求。这些任务可能包括但不限于:每天固定时间生成报表、定期清理缓存、定时发送邮件提醒等。传统的...

    Spring 集成 Quartz

    总的来说,Spring集成Quartz提供了一个强大且灵活的任务调度解决方案,使得开发者可以专注于任务的业务逻辑,而无需关心底层的调度细节。这极大地提高了开发效率,也使得应用的定时任务更加健壮和可控。

    spring+quartz使用jar包

    1. **Spring与Quartz的整合**:Spring 提供了对Quartz的集成支持,通过`org.springframework.scheduling.quartz`包中的类,如`SchedulerFactoryBean`和`ThreadPoolTaskExecutor`,可以轻松地将Quartz纳入Spring的...

    spring4.0.3集成quartz支持的扩展jar包

    spring集成quartz支持的扩展jar包,spring版本4.0.3

    spring-quartz定时设置详细说明

    二、Spring 集成 Quartz 1. 添加依赖:在 Maven 或 Gradle 项目中,需要引入 Spring 对 Quartz 的支持。添加相应的依赖库,例如: Maven: ```xml &lt;groupId&gt;org.springframework.boot &lt;artifactId&gt;spring-...

    Spring集成Quartz的简单配置的方法

    Spring集成Quartz是一种常见的在Java应用中实现定时任务的方式。Quartz是一个强大的、完全开源的作业调度框架,而Spring提供了一种优雅的方式来管理和调度这些定时任务。以下将详细阐述Spring集成Quartz的具体步骤和...

    Spring+Quartz定时任务学习文档+实例+jar包

    首先,Spring集成Quartz主要通过Spring的TaskExecution和TaskScheduling模块,这使得我们可以利用Spring的依赖注入和AOP特性来更好地管理和控制定时任务。在Spring中配置Quartz,我们通常需要以下几个步骤: 1. ...

    spring quartz 表达式在线生成器

    标题中的“Spring Quartz 表达式在线生成器”是指一个工具,它可以帮助开发者方便地创建和测试Spring集成Quartz库时所需的定时任务表达式。Quartz是一个强大的、完全开源的作业调度框架,常用于Java应用中执行定时...

    spring_quartz项目可以直接运行

    总的来说,"spring_quartz" 项目是一个很好的学习和实践 Spring Quartz 的起点,通过该项目,你可以了解如何在实际应用中配置和使用 Spring 集成 Quartz 来实现定时任务。同时,对于想要深入理解 Spring 和定时任务...

    spring+quartz demo

    Spring 提供了与 Quartz 集成的模块,使得在 Spring 应用程序中使用 Quartz 更加便捷,包括 Job 实例的管理、触发器的配置以及对 Quartz Scheduler 的控制。 在这个 "spring+quartz demo" 中,我们可以学习到如何将...

Global site tag (gtag.js) - Google Analytics