J2EE 调度程序(Quartz)

(1) Quartz 一个简单列子

import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.Trigger;
import org.quartz.TriggerUtils;
import org.quartz.impl.StdSchedulerFactory;

public class Test{

    public static void main(String []args){

        //调度器工厂

       SchedulerFactory schedFact = new StdSchedulerFactory();  

        try {

       //制造一个调度器
      Scheduler sched = schedFact.getScheduler();

        //分别在17点20分,17点19分,17点18分调用作业SjcbJob
      Test.jobDetail(sched, "myJb1", Scheduler.DEFAULT_GROUP, "triger1",    Scheduler.DEFAULT_GROUP, SjcbJob.class, "0 20 17 * * ?");
     Test.jobDetail(sched, "myJb2", Scheduler.DEFAULT_GROUP, "triger2", Scheduler.DEFAULT_GROUP, SjcbJob.class, "0 19 17 * * ?");
     Test.jobDetail(sched, "myJb3", Scheduler.DEFAULT_GROUP, "triger3", Scheduler.DEFAULT_GROUP, SjcbJob.class, "0 18 17 * * ?");
   //启动调度器

    sched.start();
   } catch (SchedulerException e) {
       e.printStackTrace();
   }

  }

 

    public static void jobDetail(Scheduler scheduler,
     String jobName,
     String jobgroup,
     String trigerName,
     String trigerGroup,
     Class jobClass,
     String triggerTime) {
   try {
   //任务实体  jobClass 是一个作业,有execute方法并且实现了Job接口,抛出JobExecutionException异常
   JobDetail jobDetail = new JobDetail(jobName, jobgroup, jobClass);
   //任务触发器  你得向调度程序说明你的作业的调用时间和频率。这个事情由与作业相关的触发器来完成
   Trigger trigger = new CronTrigger(trigerName, trigerGroup,triggerTime);
   //添加触发监听器到调度器
   scheduler.addTriggerListener(new MyTriggerListener);
   //添加工作监听器到调度器
   scheduler.addJobListener(new MyJobDetailListener());
   //匹配(必须操作)
   trigger.addTriggerListener("myTriggerListener");
   jobDetail.addJobListener("myJobListener");
   // 为调度程序设置具体工作和触发器
   //将任务添加到调度器
   scheduler.scheduleJob(jobDetail, trigger);
   } catch (Exception ex) {}
 }

}

 

 

 

(2) Spring 和 Quartz 完美结合

 

<!-- 实例化Quartz Bean -->
 <bean id="startQuartz" lazy-init="false" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
    <property name="triggers"> 
      <list> 
         <ref bean="cutPicTime"/> 
      </list> 
      </property> 
      <property name="startupDelay" value="10000"/><!-- 延迟10秒启动作业 -->
 </bean>


 <!-- 触发时间 -->
 <bean id="cutPicTime" class="org.springframework.scheduling.quartz.CronTriggerBean"> 
    <property name="jobDetail"> 
         <ref bean="cutPic"/> 
    </property> 
    <property name="cronExpression"> 
         <value>0/10000 * * * * ?</value> 
     </property> 
 </bean>


 <!-- 调用的job -->
 <bean id="cutPic" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 
  <property name="targetObject"> 
        <ref bean="cutPicBo"/><!-- 调用的Job类 --> 
  </property>   
    <property name="targetMethod"> 
        <value>cutPic</value><!-- 调用的类中的方法 --> 
  </property> 
   <property name="concurrent" value="false"/><!-- 多个job不会并发运行 -->
 </bean>

 

<!-- 实际作业 -->
 <bean id="cutPicBo" class="com.oppo.ggjg.bo.CutPicBo"/>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值