自開發實現Quartz Web管理


        網上能找到的QuartzWeb管理的資料都是使用的一個國外人寫的Quartz WebApp的東東。功能也非常全面。

可是作為自己的應用其有用不了那么多功能,一般我們僅僅要能夠定義一個job,指定一個Cron表達式完畢工作就可以,附帶的能夠再對任務進行暫停與重新啟動,基本就能夠滿足應用了。並且網上那個東西略微還是有點復雜的,不方便集成的自己的項目中。不管是風格還是樣式。

       基於這種原因。也是為了學習一個Quartz(曾經還沒實用到過)。

就想着做一個簡單Quartz的Web管理工具。包含能夠加入一個任務(加入的任務僅僅能是實現了Quartz Job接口的任務),暫停、啟動、刪除任務。

基本這些都能滿足日常應用了。

列表界面:


加入任務界面


暫停、重新啟動沒有界面。

事實上要求不太復雜時以上功能完畢能滿足應用了。

假設要改動一個任務的時間刪除重建就能夠了。

實現這些功能僅僅有簡單的兩個JSP、兩個Servlet、兩個輔助類而已。集成的自己的項目中時非常easy改動。

這個功能是要求使用Quartz本地化存儲的JobStoreTX方式的。而不是RAMJobStore。

與自己的項目集成時,可能要改動的點包含下面幾個方面。

1、  TaskListServlet中使用了項目中本身的數據源,須要依據實際情況改動。TaskOprateServlet中主要是為了完畢相關操作,不涉及數據庫。調用的都是Quartz的API。

須要有須要,全然能夠將這兩個JSP中的內容遷移到自己項目中的Action或Controller下。

2、  相關JSP中引入的JS文件路徑須要改動。也可能須要改動你訪問后台資源的路徑URL。

3、  由於要將Quartz的Job信息存儲到數據庫中,所以我們要使用Quartz的JobStoreTX。這些須要配置的東西都是在quartz.properties中,我的這個文件內容例如以下:

#===============================================================     
#Configure Main Scheduler Properties     
#===============================================================       
org.quartz.scheduler.instanceName=QuartzScheduler
org.quartz.scheduler.instanceId=AUTO
 
#===============================================================     
#Configure ThreadPool     
#===============================================================       
org.quartz.threadPool.threadCount =5
org.quartz.threadPool.threadPriority =5
org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
 
#===============================================================     
#Configure JobStore     
#===============================================================       
org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass =org.quartz.impl.jdbcjobstore.oracle.OracleDelegate
org.quartz.jobStore.tablePrefix = QRTZ_
#============================================================================
# Configure Datasources  
#============================================================================
org.quartz.jobStore.dataSource = myDS

org.quartz.dataSource.myDS.driver =oracle.jdbc.driver.OracleDriver
org.quartz.dataSource.myDS.URL = jdbc:oracle:thin:@localhost:1521:orcl
org.quartz.dataSource.myDS.user = loushang_test
org.quartz.dataSource.myDS.password = loushang_test
org.quartz.dataSource.myDS.maxConnections = 5


#===============================================================     
#Configure Plugins  only config JobInitializationPlugin but read quartz_jobs.xml file
#===============================================================       
org.quartz.plugin.jobInitializer.class=org.quartz.plugins.xml.JobInitializationPlugin
      
org.quartz.plugin.jobInitializer.overWriteExistingJobs=true
org.quartz.plugin.jobInitializer.failOnFileNotFound=true
org.quartz.plugin.jobInitializer.validating=false

4、  JobTools類中QUARTZ_INSTANCE_NAME配置的是quartz.properties配置文件里的instanceName的值。

事實上配置不配置都能夠。但還是建議配置。

基本上就這么多了。總之是相當簡單。在這個應用中是要求將全部的job與trigger都使用同一個DEFAULT組。

后台的代碼基本上簡單的不能再簡單了。以加入任務為例。代碼例如以下:

String jobName = req.getParameter("jobName");
		String jobGroup = req.getParameter("jobGroup");
		String triggerName = req.getParameter("triggerName");
		String triggerGroup = req.getParameter("triggerGroup");
		String JobClassName = req.getParameter("JobClassName");
		String jobDescription = req.getParameter("jobDescription");
		String cronExpression = req.getParameter("cronExpression");
		String startTime = req.getParameter("startTime");
		String endTime = req.getParameter("endTime");
		
		
		CronTrigger ct = new CronTrigger(triggerName.trim(),triggerGroup,cronExpression);
		if(startTime!=null && !"".equals(startTime)){
			Date date = JobTools.paraseToDate(startTime);
			ct.setStartTime(date);
		}
		if(endTime!=null && !"".equals(endTime)){
			Date date = JobTools.paraseToDate(endTime);
			ct.setEndTime(date);
		}
		
		
		Class clz = Class.forName(JobClassName.trim());
		JobDetail jd = new JobDetail(jobName.trim(),jobGroup,clz);
		jd.setDescription(jobDescription.trim());
		
		Scheduler scheduler = JobTools.getScheduler();
		scheduler.scheduleJob(jd, ct);

能夠從下面位置下載案例代碼

http://download.csdn.net/detail/srar_hanshui/8867063


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM