??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品久久久久久中文字,偷拍自拍在线,二区三区在线http://www.aygfsteel.com/evoleht/category/45932.htmlevolehtzh-cnThu, 12 Aug 2010 07:49:49 GMTThu, 12 Aug 2010 07:49:49 GMT60Scheduler定时?http://www.aygfsteel.com/evoleht/archive/2010/08/11/328567.html皮卡?/dc:creator>皮卡?/author>Wed, 11 Aug 2010 10:40:00 GMThttp://www.aygfsteel.com/evoleht/archive/2010/08/11/328567.htmlhttp://www.aygfsteel.com/evoleht/comments/328567.htmlhttp://www.aygfsteel.com/evoleht/archive/2010/08/11/328567.html#Feedback0http://www.aygfsteel.com/evoleht/comments/commentRss/328567.htmlhttp://www.aygfsteel.com/evoleht/services/trackbacks/328567.html首先d所需要的cdQquartz-1.5.2.jarQquartz-all-1.5.2.jarQquartz-jboss-1.5.2.jar 
//讄定时作业
 public void startScheduler(HttpServletRequest requests)throws SchedulerException{
  try{
   
//建立作业调度?br />    Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
   //判断作业调度内是否有作业Q如果有其删除
   
if (!scheduler.isShutdown()) {
                scheduler.deleteJob("ReceiveOnTimed", Scheduler.DEFAULT_GROUP);
            }
   //删除调度器的作业后,新徏一个我们现在要完成的作业,该作业所需要的cLReceiveJobd.class,作业名字是ReceiveOnTimes,所属分l是Scheduler.DEFAULT_GROUP
           
JobDetail jobDetail = new JobDetail("ReceiveOnTimed",
                                                Scheduler.DEFAULT_GROUP,
                                                ReceiveJobd.class);

            int m = ips.length;
            int n = tablenames.length;
            //向作业内讄要传入的参数
           
jobDetail.getJobDataMap().put("scheduler", scheduler);
            jobDetail.getJobDataMap().put("ipLength", m);
            jobDetail.getJobDataMap().put("tablenameLength", n);
            jobDetail.getJobDataMap().put("wcx",wc);
            for (int i = 0; i < m; i++) {
                jobDetail.getJobDataMap().put("ip" + i, ips[i]);
                for (int j = 0; j < n; j++) {
                    jobDetail.getJobDataMap().put("tablename" + j, tablenames[j]);
                }
            }
           
//建立触发器,判断何时触发该作?参数发器的名Uͼ触发器分l,作业名称Q作业分l,旉讑֮
           
Trigger trigger = new CronTrigger("ReceiverOnTimeTriggerd",
                                              scheduler.DEFAULT_GROUP,
                                              "ReceiveOnTimed",
                                              scheduler.DEFAULT_GROUP, time);
           
//作业和触发器添加到调度?br />             scheduler.scheduleJob(jobDetail, trigger);
           
//按照讄开始调?br />             scheduler.start();
  }catch(Exception e){
   e.printStackTrace();
  }
 }
 
具体作业cȝ处理Q?br />  package com.bodhiya.schsystem.business;

import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.Scheduler;
import org.springframework.web.context.WebApplicationContext;

public class ReceiveJobd implements Job{
 public void ReceiveJobd(){
 }
 
//作业具体实现的功?br />  public void execute(JobExecutionContext context) throws
    JobExecutionException
{
     try {
           
            //建立JobDataMap对象Q用来接收传递的参数
           
JobDataMap dataMap = context.getMergedJobDataMap();
            int ipLength = dataMap.getInt("ipLength");
            int tablenameLength = dataMap.getInt("tablenameLength");
           
WebApplicationContext wc=(WebApplicationContext)dataMap.get("wcx");
           
            String ip = "";
            String tablename = "";
            for (int i = 0; i < ipLength; i++) {
                ip = dataMap.getString("ip" + i);
                for (int j = 0; j < tablenameLength; j++) {
                    tablename = dataMap.getString("tablename" + j);
                    ExchangeAccess ea=new ExchangeAccess(ip,tablename,wc);
                     
//启动U程
                    ea.start();
                }
            }
           
Scheduler scheduler = (Scheduler) dataMap.get("scheduler");
            scheduler.deleteJob("ReceiveOnTimed", Scheduler.DEFAULT_GROUP);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
 }
}



]]>
quartz-scheduler 定时?/title><link>http://www.aygfsteel.com/evoleht/archive/2010/08/11/328564.html</link><dc:creator>皮卡?/dc:creator><author>皮卡?/author><pubDate>Wed, 11 Aug 2010 10:28:00 GMT</pubDate><guid>http://www.aygfsteel.com/evoleht/archive/2010/08/11/328564.html</guid><wfw:comment>http://www.aygfsteel.com/evoleht/comments/328564.html</wfw:comment><comments>http://www.aygfsteel.com/evoleht/archive/2010/08/11/328564.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/evoleht/comments/commentRss/328564.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/evoleht/services/trackbacks/328564.html</trackback:ping><description><![CDATA[        在阐qquartz是个什么东西之前,我先说个事。很多时候,我们l常在台历上标注出,某一天是某h的生日,某一天有某个重要的事情,l自׃个提醒。一个台历加上所要做的事情的内容Q就是一个scheduler。计机pȝQ是帮助Z完成既定事务的。所以,我们希望Q把“日程规划Q具体事?#8221;Q交l系l,pȝp按照我们的要求自动去工作?br />     好了Qquartz是q么一个东ѝ我们只需要定义好旉表,q对应指定的操作Q它p够按照我们的要求在指定时间驱动指定的工作Q如此简单?br /> <br />        quartz中,所有需要驱动的工作Q都是实现job接口的类。job接口很简单,只有一个excute()ҎQ只要把q个cMlquartzQ它׃自动L行这个方法。方法里面定义的是我们真正需要进行的工作Q恩Q这都没有什么问题?br /> <br />         现在的问题在于,很多时候我们需要执行的工作c,是外部类Qƈ没有l承job接口。也是_我们希望quartz能够驱动L的类的Q意方法,q该怎么办?q也是我W一阶段的一个小目标?br /> <br />     一开始我x变quartz的驱动方式,也就是改变runshell里面的东西,后来发现Q这太复杂了Q这是quartz最核心的东西,动一发而牵全n。我只是惛_用quartz的优势,q不惛_规模的改动?br />     C不少弯\之后Q想了一个不错的Ҏ。就是,我们只需要定义好所需要的cd、方法名、方法需要的参数Q然后利用reflectQ来实例化类Q然后invoke指定Ҏ。而把q些工作攑֜一个通用的job模板中的excuteҎQ这P我们只需要把指定参数传入q个通用job模板Q然后直接驱动此jobp实现我们上面的目标?br />     参数传递采用的Ҏ是:<br />     1、数据源。把我们需要指定的信息以配|文件的方式l出Q主要是Q工作组、工作名、工作对应的c,指定的方法,所需的参数?br />     2、数据传递。写一个metadata用来包装q些信息Q这样做是ؓ了将来管理的方便。然后用metadata来初始化jobdetailQ重写工作组、工作名Q将cM息保存在jobDataMap中,然后在执行excute的时候,再把q些信息取出来?br />     3、工作执行。利用reflect技术,执行指定cȝ指定方式?br />     4、数据返回。excutel束之前Q把需要返回的数据攑֜jobDataMap中,schedulerl束之前Q把q些数据从jobDataMap中取出来?br />     完美的方案,开心一下!<br /> <br />     下一步研Iquartz的另外一个大部分 旉表?br /> <br />     quartz的一些基本概?br /> <br />         Job ?nbsp;JobDetail<br /> <br />         Job是quartz中最基本的概念了QJob做ؓ一个接口只有一个execute()Ҏ{待实现Q理Z所有用quartz执行的job都需要实现这个接口,但是现在大多数的pȝ都不会服从这U约束,而希望能够更自由的调用原有系l中的类的方法。实现自p用,有两个途径Q我上一节ȝ中的那个Ҏ是一个简单的途径Q另外一个途径是借助于spring的class beanQ这个将在后面介l?br />         StatefullJob接口: 无状态Q务对应的JobDataMap可以认ؓ是只ȝ,而有状态的d在多ơ执行过E中保留对JobDataMap所作的修改,一个后果是有状态Q务无法被q发执行。上面这句话是抄袭的Q事实上我还是不是很清楚二者究竟的区别Q?br />     <br />         JobDetail是用来包装Job实例的具体细节的。Job以class的方式传入JobDetailQquartz会自动实例化Jobcȝ。同旉要规定job的name和groupQ在jobdetail的validate()下,一个job是必Lname和group属性,q且二者组合标C唯一的job。JobDetail中的一些重要数据存攑֜JobDataMap中,q个map可以用来在控制程序和job内传递需要传递的参数?br />         JobDetailq有三个重要的boolean值的属性,分别是durability、volatility、shouldRecover。这三个属性默认是falseQ主要在数据库操作的时候v作用?br /> <br />         Trigger旉调度<br /> <br />         相对于jobQtrigger单一些。所谓的旉调度Q就是设|job执行的时间表。Trigger主要分ؓSimpleTrigger和CronTrigger两大cR前者主要是?/1000<br /> 为单位的单时_可是讄startTime、endTime、repeatCount、repeatInterval{主要参数。CronTrigger的详l用法参看quartz文档的的CronTriggers Tutorial?br />         scheduler.schedulerJob(jobDetail, trigger);JobDetail和对应的Trigger部v到scheduler中,然后Ҏtrigger的定义,自动执行指定job?br />         Calendarq个cȝ来标识出Ҏ的时_schedulerҎtrigger执行job的时候,如果遇到q些标识出的Ҏ旉则不执行job。Calendar具体的接口有BaseCalendar、AnnualCalendar、HolidayCalendar、MonthlyCalendar、WeeklyCalendar{等。calendar的具体用法参看quartz的文档?br />         Misfire Instruction....讑֮当trigger错过了触发时ȝ时候需要采取的处理{略<br />         TriggerUtils相当于一个trigger factoryQ方便我们取得特Dtrigger的实例,而不用自己去构造?br /> <br />         Listener是用来监听quartz的执行过E的Q主要有JobListenerQTriggerListenerQSchedulerListener。joblistener监听一个job在quartz中执行的待执行,止执行Q执行完毕三个状态。TriggerListener监听trigger触发、完成、错q、禁止四个状态。SchedulerListener监听scheduler执行q程的一些状态,具体参看SchedulerListener的源代码?br /> <br /> 转自Qhttp://flyinglife.javaeye.com/blog/74553<br /> 另:http://forums.opensymphony.com/category.jspa?categoryID=8?br /> 另外推荐一个java的blogQhttp://www.aygfsteel.com/javaora/? <img src ="http://www.aygfsteel.com/evoleht/aggbug/328564.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/evoleht/" target="_blank">皮卡?/a> 2010-08-11 18:28 <a href="http://www.aygfsteel.com/evoleht/archive/2010/08/11/328564.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">¤</a>| <a href="http://" target="_blank">Т</a>| <a href="http://" target="_blank">¯</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ϫ</a>| <a href="http://" target="_blank">Ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽȪ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ĭ</a>| <a href="http://" target="_blank">ͷ</a>| <a href="http://" target="_blank">첼</a>| <a href="http://" target="_blank">̫</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ͺ</a>| <a href="http://" target="_blank">ξ</a>| <a href="http://" target="_blank">ͼƬ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">¬</a>| <a href="http://" target="_blank">ʤ</a>| <a href="http://" target="_blank">÷</a>| <a href="http://" target="_blank">Ϸ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">˳</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ϸ</a>| <a href="http://" target="_blank">Ԫ</a>| <a href="http://" target="_blank">ݶ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Դ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>