关于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. 程序员必须知道的几个国外IT网站

    1.TheServerSide 这是一个老牌的IT信息网站,从名称上你就能看出,它是关注服务器端编程的,以Java和Java周边信息为主,不过最近它也有向客户端和微软产品扩展的趋势.这个网站最初是以免 ...

  2. spry菜单栏(一)

    spry菜单栏使用教程 关于 Spry 框架 Spry 框架是一个 JavaScript 库,Web 设计人员使用它可以构建能够向站点访问者提供更丰富体验的 Web 页.有了 Spry,就可以使用 H ...

  3. Redhat6下安装QEMU

    Redhat6下安装QEMU 1.下载QEUM:http://wiki.qemu.org/Download 2.解压qemu-1.6.1.tar.bz2到/tmp目录(也可以是其他目录)下,并进入解压 ...

  4. js中substr与substring的用法与区别

    substrsubstr(start,length)表示从start位置开始,截取length长度的字符串. var src="images/pic_1.png";alert(sr ...

  5. Python代码编辑器

    PyCharm Community 说到PyCharm Community,我们就会想到它是一款免费的开源Python代码编辑器,不过这也是事实啦.PyCharm Community为我们提供了轻量级 ...

  6. MTK6515 android打版软件配置(DrvGen.exe 使用)

    1 一.配置GPIO 2 二.配置emmc 3 三.配置LCM 3.1 1.增加LCM驱动文件 3.2 2.配置驱动文件 3.3 3.配置背光 4 四.配置touch panel 4.1 1.通过dc ...

  7. [CCF2015.09]题解

    201509-1 数列分段 水,记下前一个数,看看跟当前是否一样,不一样就ans+1 #include <algorithm> #include <iostream> #inc ...

  8. grunt <% %>模板和使用配置文件

        使用<% %>分隔符指定的模板会在任务从它们的配置中读取相应的数据时将自动扩展扫描.模板会被递归的展开,直到配置中不再存在遗留的模板相关的信息(与模板匹配的).    整个配置对象 ...

  9. JavaScript高级编程(一)

    书中第2章,在HTML中使用JavaScript摘要总结 2.1 <script>元素 <script>中的5个属性:charset:可选.表示通过src属性指定的代码的字符集 ...

  10. 图片缓存之内存缓存技术LruCache,软引用

    每当碰到一些大图片的时候,我们如果不对图片进行处理就会报OOM异常, 这个问题曾经让我觉得很烦恼,后来终于得到了解决, 那么现在就让我和大家一起分享一下吧. 这篇博文要讲的图片缓存机制,我接触到的有两 ...