关于Quartz的基本知识,这里就不再多说,可以参考Quartz的example。

这里主要要说的是,个人在Quartz和Spring集成的过程中,遇到的问题和个人理解。

首先来说说个人的理解:

1、Quartz的运行原理

Quartz的重要组成部分就是,线程池和Trigger。而这些资源是被一个叫StandScheduler的类管理起来的。

所以,每一个Quartz程序咋启动的时候,都需要创建一个Scheduler对象,由它来管理Quartz的资源。它启动的时候,会首先启动Quartz的调度线程,然后初始化线程池中的线程。

每当一个trigger生效的时候,会从线程池中取出一个线程,调用对应job的execute方法,开始执行。

2.Quartz的job如何取消

首先你的job要继承自interruptablejob,但job的interrupt方法被调用时,你自己可以设一个标志表明已经被cancel了,在execute方法不断的检测这个标志,发现cacel,则中断当前的job。

3.Quartz如何嵌入到Spring中

首先要明白,Quartz如何启动Spring。且看下面的pring的配置:

<bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="configLocation" value="/WEB-INF/classes/quartz.properties" />
<property name="dataSource" ref="dataSource" />
<property name="overwriteExistingJobs" value="true" />
<property name="autoStartup" value="false" />
</bean>

这个bean在Spring启动的时候就会创建一个SchedulerFactoryBean实例,它会根据你的配置的属性,创建一个schedule实例。

quartz的基本配置,报名线程池的设置,最大的连接数等

<property name="configLocation" value="/WEB-INF/classes/quartz.properties" />

需要用到jdbc store来持久化存储,后面会详细解释
<property name="dataSource" ref="dataSource" />

需要overwrite已经存在的job,如果需要动态的修改已经存在的job,就需要设置为true,否则会以数据库中已经存在的为准
<property name="overwriteExistingJobs" value="true" />

是否自动启动,这个比较好理解
<property name="autoStartup" value="true" />

4.如何配置Quartz的jdbc 持久化。

Quartz本身就提供了两种做法来做jdbc的持久化。一个是在Quartz.properties你们配置,具体可以参考它的example。

另一个就是自己在Spring中配置SchedulerFactoryBean的datasource属性,你需要在Spring中创建一个datasource的bean。

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" >
<property name="driverClassName"><value>org.postgresql.Driver</value></property>
<property name="url"><value>jdbc:postgresql://127.0.0.1:3306/dms</value></property>
<property name="username"><value>username</value></property>
<property name="password"><value>password</value></property>
</bean>

我在使用中,第一种方式,一直没有成功,无法连接上数据库,检查了各种原因,还是没有发现root cause。

但第二张方式,没有任何问题。

Quartz与Spring集成的更多相关文章

  1. Quartz与Spring集成 Job如何自动注入Spring容器托管的对象

    在Spring中使用Quartz有两种方式实现:第一种是任务类继承QuartzJobBean,第二种则是在配置文件里定义任务类和要执行的方法,类和方法可以是普通类.很显然,第二种方式远比第一种方式来的 ...

  2. Quartz与Spring集成(二)

    一.获取quartz详情jar <!-- quartz 的jar --> <dependency> <groupId>org.quartz-scheduler< ...

  3. quartz和spring集成使用一例子【我】

    首先在spring配置文件中增加: <!-- 调度器 --> <bean name="scheduler" lazy-init="false" ...

  4. Quartz 与 Spring集成

    http://www.cnblogs.com/pigwing/archive/2011/07/12/2104002.html http://blog.arganzheng.me/posts/quart ...

  5. Spring集成Quartz定时器

    <!-- Spring集成Quartz开始 --> <bean id="startQuertz" lazy-init="false" auto ...

  6. spring集成quartz

    spring集成quartz 注意:出现异常"Caused by: java.lang.IncompatibleClassChangeError: class org.springframe ...

  7. Quartz学习——Spring和Quartz集成详解(三)

    Spring是一个很优秀的框架,它无缝的集成了Quartz,简单方便的让企业级应用更好的使用Quartz进行任务的调度.下面就对Spring集成Quartz进行简单的介绍和示例讲解!和上一节 Quar ...

  8. Spring集成Quartz完成定时任务

    在JavaEE系统中,我们经常会用到定时任务,比如每天晚上凌晨之后跑批处理或者是每天某个时刻群发消息等等. 我们可以使用java.util.Timer结合java.util.TimerTask来去完成 ...

  9. Spring集成的Quartz 并发

    以前经常在任务调度程序中使用Spring集成的Quartz,这种方式可以用简单的声明式配置即可实现定时任务,并结合了Spring自身的Bean的管理功能,非常方便.配置样本如下: <bean i ...

随机推荐

  1. Java面试汇总

    转自:http://zy19982004.iteye.com/blog/1846537#comments 一.All 最近找工作,遇到的笔试面试题,归纳如下,供大家参考. 二.J2SE 容器 Hash ...

  2. django-based blog- mezzanine

    django-based blog- mezzanine zinnia 博客 hydra  暴力破解

  3. 矩形嵌套 南阳理工ACM

    描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b<d或者b<c,a<d(相当于旋转X90度).例如(1, ...

  4. Windows,OS X 屏幕录制gif的工具

    gif比png,jpg具有更好的展示效果.github上的很多项目就用gif. 一个比较好的工具是 : http://cockos.com/licecap/    但是目前不支持linux.

  5. Android gingerbread eMMC booting

    Android gingerbread eMMC booting This page is currently under construction. The content of this page ...

  6. Webservce、WCF、WebApi的区别

    Web Service It is based on SOAP and return data in XML form. It support only HTTP protocol. It is no ...

  7. 阿里云yum源

    wget -O /etc/yum.repos.d/CentOS-Base-aliyun.repo http://mirrors.aliyun.com/repo/Centos-6.repo 参考:htt ...

  8. WCF常见异常-The maximum string content length quota (8192) has been exceeded while reading XML data

    异常信息:The maximum string content length quota (8192) has been exceeded while reading XML data 问题:调用第三 ...

  9. ASP.NET MVC 4 WebAPI. Support Areas in HttpControllerSelector

    This article was written for ASP.NET MVC 4 RC (Release Candidate). If you are still using Beta versi ...

  10. UVALive 4043 Ants 蚂蚁(二分图最佳完美匹配,KM算法)

    题意: 有n个蚂蚁n棵树,蚂蚁与树要配对,在配对成功的一对之间连一条线段,要求所有线段不能相交.按顺序输出蚂蚁所匹配的树. 思路: 这个题目真是技巧啊,不能用贪心来为每个蚂蚁选择最近的树,这样很可能是 ...