码迷,mamicode.com
首页 > Web开发 > 详细

自开发实现Quartz Web管理

时间:2015-07-03 23:29:46      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:quartz web管理

        网上能找到的QuartzWeb管理的资料都是使用的一个国外人写的Quartz WebApp的东东,功能也很全面。但是作为自己的应用其实用不了那么多功能,一般我们只要可以定义一个job,指定一个Cron表达式完成工作即可,附带的可以再对任务进行暂停与重启,基本就可以满足应用了。而且网上那个东西稍微还是有点复杂的,不方便集成的自己的项目中,无论是风格还是样式。

       基于这样的原因,也是为了学习一个Quartz(以前还没有用到过)。就想着做一个简单Quartz的Web管理工具。包括可以添加一个任务(添加的任务只能是实现了Quartz Job接口的任务),暂停、启动、删除任务。基本这些都能满足日常应用了。

列表界面:

技术分享

添加任务界面

技术分享

暂停、重启没有界面。其实要求不太复杂时以上功能完成能满足应用了。如果要修改一个任务的时间删除重建就可以了。

实现这些功能只有简单的两个JSP、两个Servlet、两个辅助类而已。集成的自己的项目中时很容易修改。

这个功能是要求使用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

版权声明:本文为博主原创文章,未经博主允许不得转载。

自开发实现Quartz Web管理

标签:quartz web管理

原文地址:http://blog.csdn.net/shiziaishuijiao/article/details/46746529

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!