zoukankan      html  css  js  c++  java
  • 自开发实现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

  • 相关阅读:
    UNIX环境高级编程 第9章 进程关系
    UNIX环境高级编程 第8章 进程控制
    UNIX环境高级编程 第7章 进程环境
    最小截断[AHOI2009]
    切糕[HNOI2013]
    餐巾
    happiness[国家集训队2011(吴确)]
    奇怪的道路[JXOI2012]
    王者之剑
    抵制克苏恩[Lydsy2017年4月月赛]
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/6784470.html
Copyright © 2011-2022 走看看