zoukankan      html  css  js  c++  java
  • Quartz与Spring集成

    关于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。

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

    本文转自:http://www.cnblogs.com/jamesmile/p/3871503.html

  • 相关阅读:
    编程 判断 是否满足条件 的 验证代码。
    Javascript作用域详解。
    DateTable To Json
    反射_获取字段的Description信息
    C# Json格式
    jQuery选择器
    SQL日期格式转换
    【转载】#pragma once与#ifndef
    C++中的左值与右值
    HTML、CSS基础知识
  • 原文地址:https://www.cnblogs.com/Rozdy/p/4157123.html
Copyright © 2011-2022 走看看