博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
计划调度的后台处理
阅读量:6083 次
发布时间:2019-06-20

本文共 6553 字,大约阅读时间需要 21 分钟。

  hot3.png

  1. 首先需要在服务启动时,初始化调度类。mgr = ScheduleMgr.getInstance();  mgr.start();

  2. 再读取配置文件TASK.XML中的配置信息。mgr.doAfterStartService();

  3. 通过读取到的类和方法定时运行相应的方法来实现功能。

  4. ScheduleMgr.java
  5. public class ScheduleMgr {    private static ScheduleMgr scheduleMgr = null;    public static final String GLOBAL_SCHEDULE = "GLOBAL_SCHEDULE";    private static Scheduler scheduler;    private List
     listLisenter = new ArrayList
    ();     /**     * getInstance方法     * @return     */    public static ScheduleMgr getInstance() {        if (scheduleMgr == null) {            scheduleMgr = new ScheduleMgr();        }        return scheduleMgr;    } public String getName() {  return "计划任务管理"; } public void start() {  try {   // 实例化调度类   scheduler = StdSchedulerFactory.getDefaultScheduler();   // 注册监听类,用于处理调度通知、日志收   for (JobListener tmpJobListener : listLisenter) {    scheduler.getListenerManager().addJobListener(tmpJobListener);   }   scheduler.clear();   scheduler.start();   ThreadUtils.setThreadVar("DEFAULT_SCHEDULE", scheduler);   // 设置全局Schedule   AppContextWrapper appWrapper = GlobalServletContext.getInstance()     .getAppContextWrapper();   appWrapper.setAttribute(GLOBAL_SCHEDULE, scheduler);  } catch (SchedulerException e1) {   Debug.logError(e1, "failed initialization scheduling...");  } } public void doAfterStartService() {  // 加载系统调度任务  try {   // A.处理宕机延时任务   List
     downTimetaskList = findDownTimeScheduleTaskList();   registerTask(scheduler, downTimetaskList);   // B.处理未运行系统任�?   List
     taskList = findScheduleTaskList();   registerTask(scheduler, taskList);  } catch (SchedulerException e1) {   Debug.logError(e1, "failed initialization scheduling...");  } } public void createScheduleFromClassInfo(List
     taskList){        try {            registerTask(scheduler, taskList);        } catch (SchedulerException e) {            Debug.logError(e, "failed initialization scheduling...");        } }  public List
     findDownTimeScheduleTaskList() {  return new ArrayList(); } public List
     findScheduleTaskList() {  XmlParser xml = new TaskXMLParser();  Map taskMap = xml.load("task.xml");  List
     taskList = new ArrayList
    ();  for (Iterator iter = taskMap.keySet().iterator(); iter.hasNext();) {   String key = (String) iter.next();   taskList.add((ScheduleTask) taskMap.get(key));  }  return taskList; } private void registerTask(Scheduler scheduler, List
     taskList)   throws SchedulerException {  ScheduleServiceApi api = new ScheduleServiceImpl(scheduler);  for (ScheduleTask task : taskList) {   api.add(task);  } } public void stop() {  try {   if (scheduler.isStarted()) {    scheduler.shutdown();   }  } catch (SchedulerException e) {   Debug.logError(e, this.getName() + " 卸载失败");  } } public void clear() {  if(scheduler != null){   try {    scheduler.clear();   } catch (SchedulerException e) {    e.printStackTrace();   }     } } public Scheduler getScheduler() {  return scheduler; }}
  6. task.xml

  7.  
      
        
    1
        
    0
        
    3
        
    *
        
    *
        
    ?
        
    *
      
      
    creatQuartzJob
      
    cn.wmc.maxplug.trbs.action.PublishTrainingAction
       
      
        
    30
        
    0/1
        
    *
        
    *
        
    *
        
    ?
        
    *
      
      
    updateDateTime
      
    cn.wmc.maxplug.trbs.action.PublishTrainingAction
     
     
  8. public class ScheduleTask { /** 任务编码 */ private String taskCode; /** 任务名称 */ private String taskName; /** 任务类型 */ private String taskType; /** */ private String taskScript; /** */ private String[] taskParam; private TaskPlan taskPlan; private boolean isDeploy; public ScheduleTask(){      } public ScheduleTask(String taskCode, String taskName, String taskType,   String taskScript, String[] taskParam) {  this.taskCode = taskCode;  this.taskName = taskName;  this.taskType = taskType;  this.taskScript = taskScript;  this.taskParam = taskParam;  this.isDeploy = false; } public String getTaskCode() {  return taskCode; } public String getTaskName() {  return taskName; } public String getTaskType() {  return taskType; } public String getTaskScript() {  return taskScript; } public String[] getTaskParam() {  return taskParam; } public void setTaskCode(String taskCode) {        this.taskCode = taskCode;    }    public void setTaskName(String taskName) {        this.taskName = taskName;    }    public void setTaskType(String taskType) {        this.taskType = taskType;    }    public void setTaskScript(String taskScript) {        this.taskScript = taskScript;    }    public void setTaskParam(String[] taskParam) {        this.taskParam = taskParam;    }    public TaskPlan getTaskPlan() {  return taskPlan; } public void setTaskPlan(TaskPlan taskPlan) {  this.taskPlan = taskPlan; } public boolean isDeploy() {  return isDeploy; }}
  9. public abstract class XmlParser {    protected final FileLocator fileLocator = new FileLocator();    public Map load(String configFileName) {        Map
     mps = new LinkedHashMap
    ();        try {            if (CommonUtils.isNullOrEmpty(configFileName))                return mps;            Document doc = buildDocument(configFileName);            if (doc == null)                return mps;            Element root = doc.getRootElement();            parse(root, mps);        } catch (Exception ex) {            ex.printStackTrace();        }        return mps;    }    protected Document buildDocument(String configFileName) {        Document doc = null;        try {            InputStream xmlStream = getInputStream(configFileName);            SAXBuilder builder = new SAXBuilder();            doc = builder.build(xmlStream);        } catch (Exception e) {            e.printStackTrace();        }        return doc;    }    protected InputStream getInputStream(String configFileName) throws Exception {        return fileLocator.getConfPathXmlStream(configFileName);    }    public abstract void parse(Element root, Map results) throws Exception;}

转载于:https://my.oschina.net/lswei/blog/208168

你可能感兴趣的文章
Galgames Hgames下载中心,无毒
查看>>
SGE中将指定的job挂起
查看>>
我的友情链接
查看>>
Nagios3.2.0在CentOS5.3上安装和配置
查看>>
软件包管理 之 如何编译安装源码包软件
查看>>
ios 图片自适应屏幕 截取
查看>>
函数的重载
查看>>
提升JavaScript的加载与执行效率
查看>>
js遍历
查看>>
简明 Python 教程
查看>>
在mac下启动postgresql
查看>>
家人北京游
查看>>
EJBCA 6 配置使用
查看>>
Nagios自定义报警时间
查看>>
有过故事的那些人
查看>>
Java中的锁详解
查看>>
Java实现单链表_使用链式存储结构
查看>>
同步之条件变量sync.Cond
查看>>
安卓四大组件之二#1-Service的创建,生命周期以及动态调用Service里的方法
查看>>
面筋:3——MySQL binlog 的日志格式
查看>>