Quartz

在数据库中创建Quartz所需表(sql语句可以在quartz-1.8.5\docs\dbTables中找到,

       这里以oracle数据库为例):

qrtz_blob_triggers,

qrtz_calendars,

qrtz_cron_triggers,

qrtz_fired_triggers,

qrtz_job_details,

qrtz_job_listeners,

qrtz_locks,

qrtz_paused_trigger_grps,

qrtz_scheduler_state,

qrtz_simple_triggers,

qrtz_triggers,

        qrtz_trigger_listeners

 

      

加入quartz所需要的包(放入jboss-4.2.3.GA\server\all\lib下):

 

 先把jboss自带的quartz jar删除掉。包括(quartz-ra.rar)都删除掉。

 

commons-dbcp-1.3.jar

commons-pool-1.5.4.jar

jta-1.1.jar

log4j-1.2.14.jar

quartz-all-1.8.5.jar

slf4j-api-1.6.0.jar

        slf4j-log4j12-1.6.0.jar
3.创建quartz-service.xml文件(放入jboss-4.2.3.GA\server\all\deploy下),文件内容如下:

 <?xml version="1.0" encoding="UTF-8"?>

<server>

  <mbean code="org.quartz.ee.jmx.jboss.QuartzService"

      name="user:service=QuartzService,name=QuartzService">

         <attribute name="JndiName">Quartz</attribute>

         <attribute name="StartScheduler">true</attribute>

<attribute name="Properties">

#============================================================================

# Configure Main Scheduler Properties

#============================================================================

         #==========集群名称,每个节点的名字都一样===========

         org.quartz.scheduler.instanceName = quartzjbossdemopartitionName

         #==========集群每个节点ID=======

org.quartz.scheduler.instanceId = AUTO

 

#============================================================================

# Configure ThreadPool

#============================================================================

         #=======线程====

         org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool

         org.quartz.threadPool.threadCount = 25

         org.quartz.threadPool.threadPriority = 5

 

#============================================================================

# Configure JobStore

#============================================================================

 

      org.quartz.jobStore.misfireThreshold = 60000

      org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX

org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.oracle.OracleDelegate

      org.quartz.jobStore.dataSource = QUARTZ

      org.quartz.jobStore.tablePrefix = QRTZ_

 

      org.quartz.jobStore.isClustered = true

      org.quartz.jobStore.clusterCheckinInterval = 30000

 

#============================================================================

# Configure Datasources

#============================================================================

                   #=================数据库写上自己的数据库======

         org.quartz.dataSource.QUARTZ.driver = oracle.jdbc.driver.OracleDriver

         org.quartz.dataSource.QUARTZ.URL = jdbc:oracle:thin:@192.168.111.24:1521:db        org.quartz.dataSource.QUARTZ.user = rootmq

         org.quartz.dataSource.QUARTZ.password = rootmq

         org.quartz.dataSource.QUARTZ.maxConnections = 5

         org.quartz.dataSource.QUARTZ.validationQuery=select 0 from dual

        

</attribute>

  </mbean>

 

</server>
4.       java 代码
每一个 Quartz Job 必须有一个实现了org.quartz.Job接口的具体类.

 

publicclass JbossJobimplements Job {

 

publicvoid execute(JobExecutionContext arg0)throws JobExecutionException {

   System.out.println("hello jbossJob .....");

}

 

}
5.   具体调用

 publicclass StartOrCloseSchedulerimplements Serializable{

 

 

   /**

    *

    */

   privatestaticfinallongserialVersionUID = -2266323478579408291L;

   privatestatic LoggermyLogger = Logger.getLogger(StartOrCloseScheduler.class);

   privatestatic Schedulersched =null;

   /**

    *启动任务

    * jobName: job名称

    * jobGroupName: job组名称

    * triggerName: trigger名称

    * triggerGroupName:trigger组名称

    */

   @SuppressWarnings("rawtypes")

   publicstaticvoid start(String jobName,String jobGroupName,

           String triggerName,String triggerGroupName,

           Class c, String str) {

      try {

          InitialContext ctx =new InitialContext();

           sched = (Scheduler) ctx.lookup("Quartz");

           System.out.println("Scheduler:" + sched);

      }catch (NamingException e) {

          e.printStackTrace();

      }

       JobDetail job =new JobDetail(jobName,jobGroupName, c);

       System.out.println("JobDetail:" + job);

        Trigger trigger =new CronTrigger(triggerName,triggerGroupName);

        System.out.println("Trigger:" + trigger);

   try {

      ((CronTrigger) trigger).setCronExpression(str);

          sched.scheduleJob(job, trigger);

          System.out.println("job:" + job);

          sched.start();

      }catch (Exception e) {

          myLogger.error("开启一个任务"+jobName+e.getMessage());

          e.printStackTrace();

      }

 

   }

 

 

   /**

    *移除一个任务

    *@param jobName: job名称

    *@param jobGroupName: job组名称

    *@param triggerName: trigger名称

    *@param triggerGroupName: trigger组名称

    *@throws SchedulerException

    */

   publicstaticvoid removeJob(String jobName,String jobGroupName,

                                String triggerName,String triggerGroupName) {

   try {

          InitialContext ctx =new InitialContext();

           sched = (Scheduler) ctx.lookup("Quartz");

      }catch (NamingException e) {

          e.printStackTrace();

      }

   try {

          //停止触发器

          sched.pauseTrigger(triggerName,triggerGroupName);

          //移除触发器

          sched.unscheduleJob(triggerName,triggerGroupName);

          //删除任务

          sched.deleteJob(jobName,jobGroupName);

      }catch (SchedulerException e) {

          myLogger.info("移除一个任务"+jobName+e.getMessage());

      }

   }

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值