网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > JAVA > 开源技术 > Tomcat > Web App用Quartz实现java schedule job  

Web App用Quartz实现java schedule job

2005-08-24  作者:BitsCN整理  来源:中国网管联盟  点评 投稿 收藏


  关于Quartz
  
  1 下载Quartz java包copy到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);
网管朋友网www_bitscn_net

  }catch(Exception e){
  logger.error("Quartz Init Servlet failed");
  }
  }}
  
  3 程序配置一个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对象
  scheduler=(Scheduler)ctx.getAttribute(Constants.SCHEDULER_KEY);
  //根据form属性建立job
  createJob(form);

网管联盟bitsCN@com


  try{
  logger.info("Scheduler starting up...");
  //启动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.
  */
  //开始时间:11:45
  String[] time=batchinfo.getDailyStartTime().split(":");

中国网管论坛bbs.bitsCN.com


  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小时
  long repeatInterval=24*60*60000;
  sTrigger = new SimpleTrigger("Trigger",
  Scheduler.DEFAULT_GROUP, rightNow.getTime(), null,
  SimpleTrigger.REPEAT_INDEFINITELY, repeatInterval);
  }
  }
  // Trigger 关联一个Calendar, batchinfo.getName()唯一表示一个Calendar
  sTrigger.setCalendarName(batchinfo.getName());
  scheduler.addCalendar(batchinfo.getName(), cal, true, true);
  try{
  //job类名为com.nova.colimas.job.Test
  jobDetail = new JobDetail(classname,
  Scheduler.DEFAULT_GROUP, Class.forName(classname));
  //job关联一个Trigger,加入scheduler
  scheduler.scheduleJob(jobDetail, sTrigger);
  }catch(ClassNotFoundException ex){
  logger.error(ex);
  throw new Exception(); 中国网管论坛bbs.bitsCN.com
  }
  return ;
  }}
  
  4 Job代码,job必须继承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 {
  // 定时运行。
  logger = Logger.getLogger(this.getClass());
  logger.info("test job is running");
  }}
  
  5 运行结果
  
  [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
  
TAGs实现   scheduler   null   logger.info   job   try   catch    
 上一篇:Maven起步——教你开始使用Maven一(图)   下一篇:Apache与Tomcat整合问题的新方法
相关文章列表
Web App用Quartz实现java schedule job 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
1.Tomcat目录结构配置文件基础学习
2.Tomcat配置技巧精华详解分析
3.关于tomcat快速启动及自动重启的方法与脚
4.嵌入式Tomcat的实现
5.IIS+tomcat整合,并且通过域名访问网站
6.从零开始手把手教你用tomcat
7.在Tomcat上开发Web应用如何保证兼容性
8.为tomcat页面设置访问权限
9.tomcat连接池的三个重要参数
10.区分Tomcat与Web服务器、应用服务器的关
最新推荐文章:
1.Tomcat配置技巧精华详解分析
2.嵌入式Tomcat的实现
3.Tomcat的配置技巧精华详解
4.解决AIX配置tomcat https出现的问题
5.名词解释 什么是Tomcat?
6.开源技术基础:TOMCAT的用法
7.Log4J 日志管理系统使用心得体会
8.一个相当经典的RMI实例源代码及详细说明
9.TOMCAT 3.1的安装与配置简要介绍
10.通过Aspire和Tomcat使用层次数据集
网管论坛交流:
·大家来开心一下吧---看了会很开心的东西-
·中国人不可不知道的知识
·@@小鹏◎◎小鹏同志与某位女明星亲密接触
·◎◎小鹏◎◎发现不明生物,居然正在交配
·[图文]^^^版主是什么?????
·泡论坛的女人是好女人
·做个“水性杨花”的女人
·献给mm俱乐部的所有mm
·深圳一集团企业电脑基础应用培训教程
·■■■■十一遊玩照■■■■■