首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Jcrontab 進階實戰:多種數據源的定時任務調度完整指南

     編輯:Java 相關知識

Jcrontab 核心架構

Jcrontab 根據 數據源(存儲任務定義的介質)分為四類:

  1. 普通文件(crontab 文本文件)
  2. 數據庫(events 表)
  3. XML 文件(需 Xerces 解析器)
  4. 程序動態添加(Crontab.newTask())

核心配置文件 jcrontab.properties 指定數據源類型、日誌、刷新頻率等。

完整示例項目結構

JCrontabApp.java      // 主啟動類,支持命令行參數切換數據源
NumTest.java          // 測試任務:每分鐘打印時間與計數
LetterTest.java       // 測試任務:每分鐘打印 Hello World
jcrontab.properties   // 核心配置
crontab / crontab.xml // 任務定義文件

數據源 1:文本文件(最簡單)

jcrontab.properties

org.jcrontab.data.file = crontab
org.jcrontab.data.datasource = org.jcrontab.data.FileSource
org.jcrontab.Crontab.refreshFrequency = 3

crontab 文件

* * * * * com.aweb.test.NumTest
* * * * * com.aweb.test.LetterTest

啟動命令

java -cp ... com.aweb.test.JCrontabApp jcrontab.properties filedata

數據源 2:數據庫(持久化、集群友好)

建表

使用 Jcrontab 提供的 SQL 創建 events 表(含 seconds、minutes、class_name、method、parameters 等字段)。

修改配置

org.jcrontab.data.datasource = org.jcrontab.data.GenericSQLSource
org.jcrontab.data.GenericSQLSource.driver = org.gjt.mm.mysql.Driver
org.jcrontab.data.GenericSQLSource.url = jdbc:mysql://127.0.0.1/netbook
org.jcrontab.data.GenericSQLSource.username = root
org.jcrontab.data.GenericSQLSource.password = 

啟動命令

java ... JCrontabApp jcrontab.properties database

程序啟動時將任務寫入 events 表,隨後輪詢執行。

數據源 3:XML 文件(結構化、易驗證)

修改配置

org.jcrontab.data.file = crontab.xml
org.xml.sax.driver = org.apache.xerces.parsers.SAXParser
org.jcrontab.data.datasource = org.jcrontab.data.XMLSource

crontab.xml 示例

<?xml version="1.0" encoding="GB2312"?>
<CRONTAB>
  <CRONTABENTRY id="0">
    <SECONDS>0</SECONDS>
    <MINUTES>*</MINUTES>
    <CLASS>com.aweb.test.NumTest</CLASS>
    <METHOD>main</METHOD>
  </CRONTABENTRY>
  <CRONTABENTRY id="2">
    <CLASS>org.jcrontab.NativeExec</CLASS>
    <METHOD>main</METHOD>
    <PARAMETERS>net send 192.168.0.109 "你好!"</PARAMETERS>
  </CRONTABENTRY>
</CRONTAB>

進階功能

執行本地應用程序

利用內置 org.jcrontab.NativeExec,XML 中配置 PARAMETERS 即可定時執行系統命令(如 ping、net send、shell 腳本)。

郵件發送任務結果

org.jcrontab.SendMail.to = yourname@sohu.com
org.jcrontab.SendMail.from = myname@sohu.com
org.jcrontab.SendMail.smtp.host = smtp.sohu.com
org.jcrontab.SendMail.smtp.username = yourname
org.jcrontab.SendMail.smtp.password = password

註:郵件功能受 SMTP 服務器策略影響,需實測調試。

動態添加任務

String[] params = {"arg1", "arg2"};
cron.newTask("org.jcrontab.NativeExec", "main", params);

關鍵類說明

  • Crontab:單例調度器,init()/uninit() 控制生命周期
  • ConnectionThread:每個客戶連接一個線程(WebServer 示例中)
  • CrontabParser / CrontabEntryBean / CrontabEntryDAO:數據庫模式下的解析與持久化
  • ShutdownHook:優雅關閉,等待運行中任務完成

總結與建議

  • 開發/測試:文本文件最輕量
  • 生產/集群:數據庫模式支持多節點共享任務、持久化
  • 配置管理:XML 適合結構化、需驗證的場景
  • 系統集成:NativeExec 橋接外部命令,SendMail 實現告警通知
  • EJB/ Servlet 定時:官方提供但實用性一般,建議獨立部署 Jcrontab 進程
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved