Quartz 框架快速入门(四)

简介:

  Spring的scheduling.quartz包中对Quartz框架进行了封装,使得开发时不用写任何QuartSpring的代码就可以实现定时任务。Spring通过JobDetailBean,MethodInvokingJobDetailFactoryBean实现Job的定义。后者更加实用,只需指定要运行的类,和该类中要运行的方法即可,Spring将自动生成符合Quartz要求的JobDetail。

在上一篇文章《Quartz 框架快速入门(三)》中我们将示例迁移到Web环境下了,但使用的是Quartz的启动机制,这一篇中我们将让Web服务器启动Spring,通过Spring的配置文件来进行任务的调度

1,创建一个Web项目,加入spring.jar,quartz-1.6.0.jar,commons-collections.jar,jta.jar ,commons-logging.jar这几个包.

     2,创建一个类,在类中添加一个方法execute,我们将对这个方法进行定时调度.

复制代码
package com.vista.quartz;

import java.util.Date;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class HelloWorld 
{
    private static Log logger = LogFactory.getLog(HelloWorld.class);//日志记录器
    public HelloWorld()
    {
    }
    public void execute()
    {
        logger.info("Kick your ass and Fuck your mother! - " + new Date()); 
    }
}
复制代码
2. Spring配置文件applicationContext.xml 修改如下:

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

    <!-- 要调用的工作类 -->
    <bean id="quartzJob" class="com.vista.quartz.HelloWorld"></bean>
    <!-- 定义调用对象和调用对象的方法 -->
    <bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <!-- 调用的类 -->
        <property name="targetObject">
            <ref bean="quartzJob"/>
        </property>
        <!-- 调用类中的方法 -->
        <property name="targetMethod">
             <value>execute</value>
        </property>
    </bean>
    <!-- 定义触发时间 -->
    <bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail">
            <ref bean="jobtask"/>
        </property>
        <!-- cron表达式 -->
        <property name="cronExpression">
            <value>10,15,20,25,30,35,40,45,50,55 * * * * ?</value>
        </property>
    </bean>
    <!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序  -->
    <bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
               <ref bean="doTime"/>
            </list>
        </property>
    </bean>
</beans>
复制代码
3,先在控制台中对上面的代码进行测试,我们要做的只是加载Spring的配置文件就可以了,代码如下:

复制代码
package com.vista.quartz;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test 
{
    public static void main(String[] args) 
    {
         System.out.println("Test start.");
            ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
            //如果配置文件中将startQuertz bean的lazy-init设置为false 则不用实例化
            //context.getBean("startQuertz");
         System.out.print("Test end..");
    }
}
复制代码
4,然后将Web.xml修改如下,让tomcat在启动时去初始化Spring:

复制代码
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
     <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/classes/applicationContext.xml
        </param-value>
    </context-param> 
    
    <servlet>
        <servlet-name>SpringContextServlet</servlet-name>
        <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet> 

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>
复制代码
5,最后启动Tomcat,测试结果如下图所示:




本文转自Phinecos(洞庭散人)博客园博客,原文链接:http://www.cnblogs.com/phinecos/archive/2008/09/03/1283376.html,如需转载请自行联系原作者
目录
相关文章
|
11月前
|
Java 调度
quartz(一)基础篇
quartz(一)基础篇
52 0
|
12月前
|
存储 Oracle Java
如何使用Quartz框架来实现任务调度?
如何使用Quartz框架来实现任务调度?
80 0
|
开发框架 Java Linux
Quartz-任务调度概述及Quartz(2.2.X)快速入门
Quartz-任务调度概述及Quartz(2.2.X)快速入门
128 0
|
运维 NoSQL 数据库连接
Quartz实战与源码解析
Quartz实战与源码解析
|
开发框架 Java API
【Quartz学习总结】——入门程序
【Quartz学习总结】——入门程序
59 0
【Quartz学习总结】——入门程序
|
Java 应用服务中间件
Quartz - 基础篇(下)
Quartz - 基础篇(下)
145 0
Quartz - 基础篇(下)
Quartz - 基础篇(上)
Quartz - 基础篇(上)
98 0
Quartz - 基础篇(上)
Quartz - 入门案例
Quartz - 入门案例
70 0
quartz入门(二)SimpleTrigger简单实例
quartz入门(二)SimpleTrigger简单实例
193 0