10.5 实现任务的自动调度

# Default Properties file for use by StdSchedulerFactory
# to create a Quartz Scheduler Instance, if a different
# properties file is not explicitly specified.
#

org.quartz.scheduler.instanceName: DefaultQuartzScheduler
org.quartz.scheduler.rmi.export: false
org.quartz.scheduler.rmi.proxy: false
org.quartz.scheduler.wrapJobExecutionInUserTransaction: false

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

org.quartz.jobStore.class: org.quartz.simpl.RAMJobStore

以上是quartz-2.2.3的quartz.properties的配置文件.加了注释之后:

# Default Properties file for use by StdSchedulerFactory
# to create a Quartz Scheduler Instance, if a different
# properties file is not explicitly specified.
#
#配置主调度器属性
org.quartz.scheduler.instanceName: DefaultQuartzScheduler
org.quartz.scheduler.rmi.export: false
org.quartz.scheduler.rmi.proxy: false
org.quartz.scheduler.wrapJobExecutionInUserTransaction: false

#配置线程池
#Quartz线程池的实现类
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

org.quartz.jobStore.class: org.quartz.simpl.RAMJobStore

接下来再看一下quartz-1.8.6的quartz.properties的配置文件.

#============================================================================
# Configure Main Scheduler Properties  
#============================================================================

org.quartz.scheduler.instanceName = TestScheduler
org.quartz.scheduler.instanceId = AUTO

org.quartz.scheduler.skipUpdateCheck = true

#============================================================================
# Configure ThreadPool  
#============================================================================

org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 12
org.quartz.threadPool.threadPriority = 5

#============================================================================
# Configure JobStore  
#============================================================================

org.quartz.jobStore.misfireThreshold = 60000

org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore

#org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
#org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
#org.quartz.jobStore.useProperties = false
#org.quartz.jobStore.dataSource = myDS
#org.quartz.jobStore.tablePrefix = QRTZ_
#org.quartz.jobStore.isClustered = false

#============================================================================
# Configure Datasources  
#============================================================================

#org.quartz.dataSource.myDS.driver = org.postgresql.Driver
#org.quartz.dataSource.myDS.URL = jdbc:postgresql://localhost/dev
#org.quartz.dataSource.myDS.user = jhouse
#org.quartz.dataSource.myDS.password = 
#org.quartz.dataSource.myDS.maxConnections = 5

添加注释之后再看看

#============================================================================
# Configure Main Scheduler Properties 配置主调度器属性 
#============================================================================

org.quartz.scheduler.instanceName = TestScheduler
org.quartz.scheduler.instanceId = AUTO

org.quartz.scheduler.skipUpdateCheck = true

#============================================================================
# Configure ThreadPool  配置线程池 Quartz线程池的实现类
#============================================================================

org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
#=============================================================================
# 线程池的线程数量 线程里线程的优先级
#=============================================================================
org.quartz.threadPool.threadCount = 12
org.quartz.threadPool.threadPriority = 5

#============================================================================
# Configure JobStore  配置作业存储
#============================================================================

org.quartz.jobStore.misfireThreshold = 60000

org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore

#org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
#org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
#org.quartz.jobStore.useProperties = false
#org.quartz.jobStore.dataSource = myDS
#org.quartz.jobStore.tablePrefix = QRTZ_
#org.quartz.jobStore.isClustered = false

#============================================================================
# Configure Datasources  
#============================================================================

#org.quartz.dataSource.myDS.driver = org.postgresql.Driver
#org.quartz.dataSource.myDS.URL = jdbc:postgresql://localhost/dev
#org.quartz.dataSource.myDS.user = jhouse
#org.quartz.dataSource.myDS.password = 
#org.quartz.dataSource.myDS.maxConnections = 5
import java.util.Date;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;


public class TestJob implements Job{
    /*
     * execute方法体是被调度的作业体
     * (non-Javadoc)
     * @see org.quartz.Job#execute(org.quartz.JobExecutionContext)
     */
    //判断作业是否执行的旗标
    private boolean isRunning = false;
    @Override
    public void execute(JobExecutionContext arg0) 
            throws JobExecutionException {
        // TODO Auto-generated method stub
       //如果作业没有被调度
       if(!isRunning)
       {
           System.out.println(new Date() + "    作业被调度。     ");
           //循环100次来模拟任务的执行
           for (int i = 0; i < 100; i++) {
            System.out.println("作业完成" + (i+1) + "%");
            
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
           System.out.println(new Date() + "  作业调度结束。 ");
       }
       //如果作业正在运行,即使获得调度,也立即退出
       else{
           System.out.println(new Date() + "任务退出");
       }
       
        
    }
}
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleTrigger;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;


public class MyQuartzServer {
   public static void main(String[] args) {
       MyQuartzServer server = new MyQuartzServer();
       try {
        server.startScheduler();
    } catch (SchedulerException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
//执行调度
private void startScheduler() throws SchedulerException{
    //使用工厂创建调度器实例
    Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
    //以作业创建JobDetail实例
    JobDetail jobDetail= new JobDetail("dd",Scheduler.DEFAULT_GROUP,TestJob.class);
    //创建trigger,创建一个简单的调度器
    //指定该任务被重复调度50次,每次间隔20秒
    Trigger trigger = new SimpleTrigger("dd",Scheduler.DEFAULT_GROUP,50,20000);        
    //调度器将作业与trigger关联起来
    scheduler.scheduleJob(jobDetail, trigger);
    //开始调度
    scheduler.start();
}
}
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Sun Nov 12 17:19:08 CST 2017    作业被调度。     
作业完成1%
作业完成2%
作业完成3%
作业完成4%
作业完成5%
作业完成6%
作业完成7%
作业完成8%
作业完成9%
作业完成10%
作业完成11%
作业完成12%
作业完成13%
作业完成14%
作业完成15%
作业完成16%
作业完成17%
作业完成18%
作业完成19%
作业完成20%
作业完成21%
作业完成22%
作业完成23%
作业完成24%
作业完成25%
作业完成26%
作业完成27%
作业完成28%
作业完成29%
作业完成30%
作业完成31%
作业完成32%
作业完成33%
作业完成34%
作业完成35%
作业完成36%
作业完成37%
作业完成38%
作业完成39%
作业完成40%
作业完成41%
作业完成42%
作业完成43%
作业完成44%
作业完成45%
作业完成46%
作业完成47%
作业完成48%
作业完成49%
作业完成50%
作业完成51%
作业完成52%
作业完成53%
作业完成54%
作业完成55%
作业完成56%
作业完成57%
作业完成58%
作业完成59%
作业完成60%
作业完成61%
作业完成62%
作业完成63%
作业完成64%
作业完成65%
作业完成66%
作业完成67%
作业完成68%
作业完成69%
作业完成70%
作业完成71%
作业完成72%
作业完成73%
作业完成74%
作业完成75%
作业完成76%
作业完成77%
作业完成78%
作业完成79%
作业完成80%
作业完成81%
作业完成82%
作业完成83%
作业完成84%
作业完成85%
作业完成86%
作业完成87%
作业完成88%
作业完成89%
作业完成90%
作业完成91%
作业完成92%
作业完成93%
作业完成94%
作业完成95%
作业完成96%
作业完成97%
作业完成98%
作业完成99%
作业完成100%
Sun Nov 12 17:19:18 CST 2017  作业调度结束。 
Sun Nov 12 17:19:28 CST 2017    作业被调度。     
作业完成1%
作业完成2%
作业完成3%
作业完成4%
作业完成5%
作业完成6%
作业完成7%
作业完成8%
作业完成9%
作业完成10%
作业完成11%
作业完成12%
作业完成13%
作业完成14%
作业完成15%
作业完成16%
作业完成17%
作业完成18%
作业完成19%
作业完成20%
作业完成21%
作业完成22%
作业完成23%
作业完成24%
作业完成25%
作业完成26%
作业完成27%
作业完成28%
作业完成29%
作业完成30%
作业完成31%
作业完成32%
作业完成33%
作业完成34%
作业完成35%
作业完成36%
作业完成37%
作业完成38%
作业完成39%
作业完成40%
作业完成41%
作业完成42%
作业完成43%
作业完成44%
作业完成45%
作业完成46%
作业完成47%
作业完成48%
作业完成49%
作业完成50%
作业完成51%
作业完成52%
作业完成53%
作业完成54%
作业完成55%
作业完成56%
作业完成57%
作业完成58%
作业完成59%
作业完成60%
作业完成61%
作业完成62%
作业完成63%
作业完成64%
作业完成65%
作业完成66%
作业完成67%
作业完成68%
作业完成69%
作业完成70%
作业完成71%
作业完成72%
作业完成73%
作业完成74%
作业完成75%
作业完成76%
作业完成77%
作业完成78%
作业完成79%
作业完成80%
作业完成81%
作业完成82%
作业完成83%
作业完成84%
作业完成85%
作业完成86%
作业完成87%
作业完成88%
作业完成89%
作业完成90%
作业完成91%
作业完成92%
作业完成93%
作业完成94%
作业完成95%
作业完成96%
作业完成97%
作业完成98%
作业完成99%
作业完成100%
Sun Nov 12 17:19:38 CST 2017  作业调度结束。 
Sun Nov 12 17:19:48 CST 2017    作业被调度。     
作业完成1%
作业完成2%
作业完成3%
作业完成4%
作业完成5%
作业完成6%
作业完成7%
作业完成8%
作业完成9%
作业完成10%
作业完成11%
作业完成12%
作业完成13%
作业完成14%
作业完成15%
作业完成16%
作业完成17%
作业完成18%
作业完成19%
作业完成20%
作业完成21%
作业完成22%
作业完成23%
作业完成24%
作业完成25%
作业完成26%
作业完成27%
作业完成28%
作业完成29%
作业完成30%
作业完成31%
作业完成32%
作业完成33%
作业完成34%
作业完成35%
作业完成36%
作业完成37%
作业完成38%
作业完成39%
作业完成40%
作业完成41%
作业完成42%
作业完成43%
作业完成44%
作业完成45%
作业完成46%
作业完成47%
作业完成48%
作业完成49%
作业完成50%
作业完成51%
作业完成52%
作业完成53%
作业完成54%
作业完成55%
作业完成56%
作业完成57%
作业完成58%
作业完成59%
作业完成60%
作业完成61%
作业完成62%
作业完成63%
作业完成64%
作业完成65%
作业完成66%
作业完成67%
作业完成68%
作业完成69%
作业完成70%
作业完成71%
作业完成72%
作业完成73%
作业完成74%
作业完成75%
作业完成76%
作业完成77%
作业完成78%
作业完成79%
作业完成80%
作业完成81%
作业完成82%
作业完成83%
作业完成84%
作业完成85%
作业完成86%
作业完成87%
作业完成88%
作业完成89%
作业完成90%
作业完成91%
作业完成92%
作业完成93%
作业完成94%
作业完成95%
作业完成96%
作业完成97%
作业完成98%
作业完成99%
作业完成100%
Sun Nov 12 17:19:58 CST 2017  作业调度结束。 
Sun Nov 12 17:20:08 CST 2017    作业被调度。     
作业完成1%
作业完成2%
作业完成3%
作业完成4%
作业完成5%
作业完成6%
作业完成7%
作业完成8%
作业完成9%
作业完成10%
作业完成11%
作业完成12%
作业完成13%
作业完成14%
作业完成15%
作业完成16%
作业完成17%
作业完成18%
作业完成19%
作业完成20%
作业完成21%
作业完成22%
作业完成23%
作业完成24%
作业完成25%
作业完成26%
作业完成27%
作业完成28%
作业完成29%
作业完成30%
作业完成31%
作业完成32%
作业完成33%
作业完成34%
作业完成35%
作业完成36%
作业完成37%
作业完成38%
作业完成39%
作业完成40%
作业完成41%
作业完成42%
作业完成43%
作业完成44%
作业完成45%
作业完成46%
作业完成47%
作业完成48%
作业完成49%
作业完成50%
作业完成51%
作业完成52%
作业完成53%
作业完成54%
作业完成55%
作业完成56%
作业完成57%
作业完成58%
作业完成59%
作业完成60%
作业完成61%
作业完成62%
作业完成63%
作业完成64%
作业完成65%
作业完成66%
作业完成67%
作业完成68%
作业完成69%
作业完成70%
作业完成71%
作业完成72%
作业完成73%
作业完成74%
作业完成75%
作业完成76%
作业完成77%
作业完成78%
作业完成79%
作业完成80%
作业完成81%
作业完成82%
作业完成83%
作业完成84%
作业完成85%
作业完成86%
作业完成87%
作业完成88%
作业完成89%
作业完成90%
作业完成91%
作业完成92%
作业完成93%
作业完成94%
作业完成95%
作业完成96%
作业完成97%
作业完成98%
作业完成99%
作业完成100%
Sun Nov 12 17:20:18 CST 2017  作业调度结束。 
Sun Nov 12 17:20:28 CST 2017    作业被调度。     
作业完成1%
作业完成2%
作业完成3%
作业完成4%
作业完成5%
作业完成6%
作业完成7%
作业完成8%
作业完成9%
作业完成10%
作业完成11%
作业完成12%
作业完成13%
作业完成14%
作业完成15%
作业完成16%
作业完成17%
作业完成18%
作业完成19%
作业完成20%
作业完成21%
作业完成22%
作业完成23%
作业完成24%
作业完成25%
作业完成26%
作业完成27%
作业完成28%
作业完成29%
作业完成30%
作业完成31%
作业完成32%
作业完成33%
作业完成34%
作业完成35%
作业完成36%
作业完成37%
作业完成38%
作业完成39%
作业完成40%
作业完成41%
作业完成42%
作业完成43%
作业完成44%
作业完成45%
作业完成46%
作业完成47%
作业完成48%
作业完成49%
作业完成50%
作业完成51%
作业完成52%
作业完成53%
作业完成54%
作业完成55%
作业完成56%
作业完成57%
作业完成58%
作业完成59%
作业完成60%
作业完成61%
作业完成62%
作业完成63%
作业完成64%
作业完成65%
作业完成66%
作业完成67%
作业完成68%
作业完成69%
作业完成70%
作业完成71%
作业完成72%
作业完成73%
作业完成74%
作业完成75%
作业完成76%
作业完成77%
作业完成78%
作业完成79%
作业完成80%
作业完成81%
作业完成82%
作业完成83%
作业完成84%
作业完成85%
作业完成86%
作业完成87%
作业完成88%
作业完成89%
作业完成90%
作业完成91%
作业完成92%
作业完成93%
作业完成94%
作业完成95%
作业完成96%
作业完成97%
作业完成98%
作业完成99%
作业完成100%
Sun Nov 12 17:20:38 CST 2017  作业调度结束。 
Sun Nov 12 17:20:48 CST 2017    作业被调度。     
作业完成1%
作业完成2%
作业完成3%
作业完成4%
作业完成5%
作业完成6%
作业完成7%
作业完成8%
作业完成9%
作业完成10%
作业完成11%
作业完成12%
作业完成13%
作业完成14%
作业完成15%
作业完成16%
作业完成17%
作业完成18%
作业完成19%
作业完成20%
作业完成21%
作业完成22%
作业完成23%
作业完成24%
作业完成25%
作业完成26%
作业完成27%
作业完成28%
作业完成29%
作业完成30%
作业完成31%
作业完成32%
作业完成33%
作业完成34%
作业完成35%
作业完成36%
作业完成37%
作业完成38%
作业完成39%
作业完成40%
作业完成41%
作业完成42%
作业完成43%
作业完成44%
作业完成45%
作业完成46%
作业完成47%
作业完成48%
作业完成49%
作业完成50%
作业完成51%
作业完成52%
作业完成53%
作业完成54%
作业完成55%
作业完成56%
作业完成57%
作业完成58%
作业完成59%
作业完成60%
作业完成61%
作业完成62%
作业完成63%
作业完成64%
作业完成65%
作业完成66%
作业完成67%
作业完成68%
作业完成69%
作业完成70%
作业完成71%
作业完成72%
作业完成73%
作业完成74%
作业完成75%
作业完成76%
作业完成77%
作业完成78%
作业完成79%
作业完成80%
作业完成81%
作业完成82%
作业完成83%
作业完成84%
作业完成85%
作业完成86%
作业完成87%
作业完成88%
作业完成89%
作业完成90%
作业完成91%
作业完成92%
作业完成93%
作业完成94%
作业完成95%
作业完成96%
作业完成97%
作业完成98%
作业完成99%
作业完成100%
Sun Nov 12 17:20:58 CST 2017  作业调度结束。 
Sun Nov 12 17:21:08 CST 2017    作业被调度。     
作业完成1%
作业完成2%
作业完成3%
作业完成4%
作业完成5%
作业完成6%
作业完成7%
作业完成8%
作业完成9%
作业完成10%
作业完成11%
作业完成12%
作业完成13%
作业完成14%
作业完成15%
作业完成16%
作业完成17%
作业完成18%
作业完成19%
作业完成20%
作业完成21%
作业完成22%
作业完成23%
作业完成24%
作业完成25%
作业完成26%
作业完成27%
作业完成28%
作业完成29%
作业完成30%
作业完成31%
作业完成32%
作业完成33%
作业完成34%
作业完成35%
作业完成36%
作业完成37%
作业完成38%
作业完成39%
作业完成40%
作业完成41%
作业完成42%
作业完成43%
作业完成44%
作业完成45%
作业完成46%
作业完成47%
作业完成48%
作业完成49%
作业完成50%
作业完成51%
作业完成52%
作业完成53%
作业完成54%
作业完成55%
作业完成56%
作业完成57%
作业完成58%
作业完成59%
作业完成60%
作业完成61%
作业完成62%
作业完成63%
作业完成64%
作业完成65%
作业完成66%
作业完成67%
作业完成68%
作业完成69%
作业完成70%
作业完成71%
作业完成72%
作业完成73%
作业完成74%
作业完成75%
作业完成76%
作业完成77%
作业完成78%
作业完成79%
作业完成80%
作业完成81%
作业完成82%
作业完成83%
作业完成84%
作业完成85%
作业完成86%
作业完成87%
作业完成88%
作业完成89%
作业完成90%
作业完成91%
作业完成92%
作业完成93%
作业完成94%
作业完成95%
作业完成96%
作业完成97%
作业完成98%
作业完成99%
作业完成100%
Sun Nov 12 17:21:18 CST 2017  作业调度结束。 

第一个考勤作业:PunchJob。系统每天为员工自动插入两次“旷工”考勤记录,而每次员工实际打卡时将会修改对应的考勤记录。

package org.crazyit.hrsystem.schedule;

import org.crazyit.hrsystem.service.EmpManager;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;

public class PunchJob extends QuartzJobBean{
    //判断作业是否执行的旗标
    private boolean isRunning = false;
    //该作业类所依赖的业务逻辑组件
    private EmpManager empMgr;
    
    public void setEmpMgr(EmpManager empMgr) {
        this.empMgr = empMgr;
    }

    @Override
    protected void executeInternal(JobExecutionContext ctx)
            throws JobExecutionException {
        // TODO Auto-generated method stub
        if(!isRunning){
            System.out.println("开始调度自动打卡");
            isRunning = true;
            //调用业务逻辑方法
            empMgr.autoPunch();
            isRunning = false;
        }
    }
    
}

第二个是工资结算作业:PayJob。该作业在每月3日自动结算每个员工上个月的工资。

package org.crazyit.hrsystem.schedule;

import org.crazyit.hrsystem.service.EmpManager;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;

public class PayJob extends QuartzJobBean{
    //判断作业是否执行的旗标
    private boolean isRunning = false;
    //该作业类所依赖的业务逻辑组件
    private EmpManager empMgr;
    
    public void setEmpMgr(EmpManager empMgr) {
        this.empMgr = empMgr;
    }
    //定义任务执行体
    @Override
    protected void executeInternal(JobExecutionContext arg0)
            throws JobExecutionException {
        // TODO Auto-generated method stub
        if(!isRunning){
            System.out.println("开始调度自动结算工资");
            isRunning = true;
            //调用业务逻辑方法
            empMgr.autoPay();
            isRunning = false;
        }
    }

}

10.6 实现系统Web层

 

 

ActionSupport是需要导入xwork-2.1.1.jar包才可以.

转载于:https://www.cnblogs.com/ZHONGZHENHUA/p/7819912.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值