JFianl框架中定時任務的使用

1.pom.xml中

<!-- 調度任務 -->
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.2.2</version>
        </dependency>

2.配置類中 DemoConfig.java

@Override
    public void configPlugin(Plugins plugins) {
        //讀取xxx.sql文件 該文件定義了項目需要的sql語句 增刪改查之類
        //例如:
        //#sql("removeAddress")
        //UPDATE user SET `status` = ? WHERE user_id = ?
        //#end
        
        arp.setBaseSqlTemplatePath(PathKit.getRootClassPath() + "/sqls");
        arp.addSqlTemplate("all.sql");



        //配置quartz插件
        plugins.add(new QuartzPlugin());

    }

QuartzPlugin類是implements IPlugin 的類
它加載了任務調度的配置文件quartz.properties和jobs.properties
加載的定時任務存放在Map中;以及獲得cron表達式,最終從jobs.properties中獲得
2.1 jobs.properties 配置文件中

#定時更新(每一分鐘執行一次)
a.job= job執行的任務
a.cron=0 0/1 * * * ?  //這裏是jfinal的cron表達式,跟原生的表達式稍微有些區別
a.enable=true

xxxx.job=com.job.OneDayJob//任務調度的類
xxxx.cron=0 58 23 ? * *//cron表達式 我這個是每天的23:58執行一次
xxxx.enable=true  //是否開啓  true開  false關閉

2.2 任務調度的類 實現Job的類

public class OneDayJob implements Job {
    //一定要實現 Job這個類
    //這是個抽象方法
    public void execute(JobExecutionContext arg0) throws JobExecutionException {
        try {
                   System.out.println("--------任務調度-----");          

        } catch (Exception e) {
            System.out.println("一天任務調度失敗");
        }
    }
}

2.3 quartz.properties 配置文件


# 調度器屬性
org.quartz.scheduler.instanceName=myScheduler
org.quartz.scheduler.instanceId=AUTO
org.quartz.scheduler.skipUpdateCheck=true

# 線程池屬性
org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount=5
org.quartz.threadPool.threadPriority=5

# 存儲方式
org.quartz.jobStore.misfireThreshold=600000
org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.useProperties=false
org.quartz.jobStore.dataSource=my
org.quartz.jobStore.tablePrefix=qrtz_
org.quartz.jobStore.isClustered=true
org.quartz.jobStore.clusterCheckinInterval=20000

# 提供數據庫連接
org.quartz.dataSource.my.connectionProvider.class= 數據庫連接類

數據庫連接類實現ConnectionProvider
讀取database.properties 配置文件內容 並初始化連接,進行初始化時添加:
WallFilter wallFilter = new WallFilter();
爲了防禦SQL注入攻擊

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章