麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Web App用Quartz實(shí)現(xiàn)java schedule job

2019-11-18 13:06:09
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  關(guān)于Quartz
  
  1 下載Quartz java包c(diǎn)opy到WEB-INF/lib下
  
  2 建立 scheduler初始化servlet
  
  在web.xml里加入
  <servlet>
  <servlet-name>Initializer</servlet-name>
  <servlet-class>
  com.nova.colimas.web.action.StartupServlet
  </servlet-class>
  <load-on-startup>1</load-on-startup>
  </servlet>
  
  初始化servlet代碼如下:
  
  public class StartupServlet extends HttpServlet {
  public void init(ServletConfig cfg) throws
  javax.servlet.ServletException {
  initScheduler(cfg);
  return;
  }
  PRotected void initScheduler(ServletConfig cfg){
  logger.info("Quartz Init Servlet loaded, initializing Scheduler...");
  // Start now
  try{
  // Create an default instance of the Scheduler
  Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
  //將scheduler存入serlvet上下文。
  cfg.getServletContext().setAttribute(Constants.SCHEDULER_KEY,scheduler);
  }catch(Exception e){
  logger.error("Quartz Init Servlet failed");
  }
  }}
  
  3 程序配置一個(gè)schedule job
  
  /**
  * @author tyrone
  *
  * TODO To change the template for this generated type comment go to
  * Window - Preferences - Java - Code Style - Code Templates */public class BatchEditAction extends Action implements PrivilegedAction {
  private static Logger logger = null;
  private Scheduler scheduler=null;
  public ActionForward execute(ActionMapping mapping,
  ActionForm form,
  HttpServletRequest request,
  HttpServletResponse response)
  throws Exception{
  ActionMessages errors=new ActionMessages();
  logger = Logger.getLogger(this.getClass());
  //獲得Servlet上下文
  ServletContext ctx =
  request.getsession().getServletContext();
  //獲得scheduler對(duì)象
  scheduler=(Scheduler)ctx.getAttribute(Constants.SCHEDULER_KEY);
  //根據(jù)form屬性建立job
  createJob(form);
  try{
  logger.info("Scheduler starting up...");
  //啟動(dòng)scheduler。
  scheduler.start();
  }catch(Exception e){
  logger.error("scheduler get error");
  }
  return mapping.findForward("sUCcess");
  }
  /**
  * create a job based on form info.
  * @param form
  * @return
  */  protected void createJob(ActionForm form) throws Exception{
  BatchInfoForm batchinfo=(BatchInfoForm)form;
  String classname=batchinfo.getFile();
  SimpleTrigger sTrigger=null;
  JobDetail jobDetail=null;
  Calendar cal=null;
  //假如是一天一次的job
  if (batchinfo.getFrequency().equalsIgnoreCase("onceDaily")){
  logger.info("Batch run OnceDaily");
  cal = new AnnualCalendar();
  //Add Calendar to the Scheduler
  /*
  * Setup a trigger to start firing now, with a null end date/time,
  * repeat forever and have (hour*60+ minute)*60000 ms between each firing.
  */
  //開(kāi)始時(shí)間:11:45
  String[] time=batchinfo.getDailyStartTime().split(":");
  java.util.Calendar rightNow = java.util.Calendar.getInstance();
  rightNow.set(java.util.Calendar.HOUR_OF_DAY,new Integer(time[0]).intValue());
  rightNow.set(java.util.Calendar.MINUTE,new Integer(time[1]).intValue());
  //間隔24小時(shí)
  long repeatInterval=24*60*60000;
  sTrigger = new SimpleTrigger("Trigger",
  Scheduler.DEFAULT_GROUP, rightNow.getTime(), null,
  SimpleTrigger.REPEAT_INDEFINITELY, repeatInterval);
  }
  }
  // Trigger 關(guān)聯(lián)一個(gè)Calendar, batchinfo.getName()唯一表示一個(gè)Calendar
  sTrigger.setCalendarName(batchinfo.getName());
  scheduler.addCalendar(batchinfo.getName(), cal, true, true);
  try{
  //job類(lèi)名為com.nova.colimas.job.Test
  jobDetail = new JobDetail(classname,
  Scheduler.DEFAULT_GROUP, Class.forName(classname));
  //job關(guān)聯(lián)一個(gè)Trigger,加入scheduler
  scheduler.scheduleJob(jobDetail, sTrigger);
  }catch(ClassNotFoundException ex){
  logger.error(ex);
  throw new Exception();
  }
  return ;
  }}
  
  4 Job代碼,job必須繼續(xù)org.quartz.Job
  
  package com.nova.colimas.job;import org.apache.log4j.Logger;
  import org.quartz.Job;
  import org.quartz.JobExecutionContext;
  import org.quartz.JobExecutionException;
  public class Test implements Job {
  private static Logger logger = null;
  public void execute(JobExecutionContext arg0) throws JobExecutionException {
  // 定時(shí)運(yùn)行。
  logger = Logger.getLogger(this.getClass());
  logger.info("test job is running");
  }}
  
  5 運(yùn)行結(jié)果
  
  [framework] 2005-08-23 11:45:29,440 - com.nova.colimas.job.Test -215700 [DefaultQuartzScheduler_Worker-0] INFO com.nova.colimas.job.Test - test job is running

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产精品观看在线亚洲人成网 | 免费看成年人网站 | 久久久久久69 | 中文字幕欧美一区二区三区 | 久久久久久久久久久久久久久伊免 | 91av亚洲| 午夜视频你懂的 | 俄罗斯16一20sex牲色另类 | 国产福利视频在线观看 | 色域tv | h网站在线观看 | 女人叉开腿让男人桶 | 最新一区二区三区 | 青青草免费观看 | 成人毛片免费视频 | 在线亚洲播放 | 伊久在线| 中文字幕在线观看视频一区 | 毛片在线视频观看 | 欧美雌雄另类xxxxx | 毛片av网| 日韩中文字幕三区 | 4p一女两男做爰在线观看 | 有色视频在线观看 | 性爱视频免费 | 二区三区四区视频 | 国产人成精品一区二区三 | 牛牛热这里只有精品 | 欧美日本国产精品 | 国产伦久视频免费观看视频 | 久久久三区 | 久久久久国产一区二区三区不卡 | 国产精品啪一品二区三区粉嫩 | 欧美第1页| 毛片在线免费视频 | 久草视频福利在线观看 | 在线视频观看成人 | 色av综合在线 | 国产精品成人一区二区三区吃奶 | 精品国产一区二区三区在线观看 | 一级做a爰片性色毛片2021 |