`
hojor
  • 浏览: 109226 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java框架介绍:Quartz从入门到进阶(3)

    博客分类:
  • java
阅读更多

用调度器调用作业
  
  首先创建一个作业,但为使作业能被调度器调用,你得向调度程序说明你的作业的调用时间和频率。这个事情由与作业相关的触发器来完成。因为我们仅仅对大约每60秒循环调用作业感爱好,所以打算使用SimpleTrigger。
  
  作业和触发器通过Quartz调度器接口而被调度。我们需要从调度器工厂类取得一个调度器的实例。最轻易的办法是调用StdSchedulerFactory这个类上的静态方法getDefaultScheduler()。
  
  使用Quartz框架,你需要调用start()方法来启动调度器。例3的代码遵循了大多数Quartz应用的一般模式:创建一个或多个作业,创建和设置触发器,用调度器调度作业和触发器,启动调度器。
  
  例3.Quartz作业通过Quartz调度器而被调度
  
  

public class MyQuartzServer {
  public static void main(String[] args) {
  MyQuartzServer server = new MyQuartzServer();
  try {
  server.startScheduler();
  } catch (SchedulerException ex) {
  ex.printStackTrace();
  }
  }
  protected void startScheduler() throws SchedulerException {
  // Use the factory to create a Scheduler instance
  Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
  // JobDetail holds the definition for Jobs
  JobDetail jobDetail = new JobDetail("ScanFTPJob", Scheduler.DEFAULT_GROUP,
  ScanFTPSiteJob.class);// Store job parameters to be used within execute()jobDetail.getJobDataMap().put("FTP_HOST", "\\home\\cavaness\\inbound");
  // Other neccessary Job parameters here
  // Create a Trigger that fires every 60 seconds
  Trigger trigger = TriggerUtils.makeSecondlyTrigger(60);
  // Setup the Job and Trigger with the Scheduler
  scheduler.scheduleJob(jobDetail, trigger );
  // Start the Scheduler running
  scheduler.start();
  }}

   
  编程调度同声明性调度
  
  例3中,我们通过编程的方法调度我们的ScanFTPSiteJob作业。就是说,我们用java代码来设置作业和触发器。Quartz框架也支持在xml文件里面申明性的设置作业调度。申明性方法答应我们更快速地修改哪个作业什么时候被执行。
  
  Quartz框架有一个插件,这个插件负责读取xml配置文件。xml配置文件包含了关于启动Quartz应用的作业和触发器信息。所有xml文件中的作业连同相关的触发器都被加进调度器。你仍然需要编写作业类,但配置那些作业类的调度器则非常动态化。例4展示了一个用申明性方式执行与例3代码相同的逻辑的xml配置文件。
  
  例4.能使用xml文件调度的作业
 
  

  <?xml version='1.0' encoding='utf-8'?><quartz>
  <job>
  <job-detail>
  <name>ScanFTPSiteJob</name>
  <group>DEFAULT</group>
  <description>
  A job that scans an ftp site for files
  </description>
  <job-class>ScanFTPSiteJob</job-class>
  <job-data-map allows-transient-data="true">
  <entry>
  <key>FTP_HOST</key>
  <value>\home\cavaness\inbound</value>
  </entry>
  <!-- Other neccessary Job parameters here 
  </job-data-map>
  </job-detail>
  <trigger>
  <simple>
  <name>ScanFTPSiteJoBTrigger</name>
  <group>DEFAULT</group>
  <job-name>ScanFTPSiteJob</job-name>
  <job-group>DEFAULT</job-group>
  <start-time>2005-09-11 6:10:00 PM</start-time>
  <!-- repeat indefinitely every 60 seconds 
  <repeat-count>-1</repeat-count>
  <repeat-interval>60000</repeat-interval>
  </simple>
  </trigger>
  </job></quartz>

   
  你可以将xml文件中的元素跟例3代码作个比较,它们从概念上来看是相同的。使用例4式的申明性方法的好处是维护变得极其简单,只需改变xml配置文件和重新启动Quartz应用即可。无须修改代码,无须重新编译,无须重新部署。
  
  有状态和无状态作业
  
  在本文中你所看到的作业到是无状态的。这意味着在两次作业执行之间,不会去维护作业执行时JobDataMap的状态改变。假如你需要能增、删,改JobDataMap的值,而且能让作业在下次执行时能看到这个状态改变,则需要用Quartz有状态作业。
  
  假如你是一个有经验的EJB开发者的话,深信你会立即退缩,因为有状态带有负面含义。这主要是由于EJB带来的伸缩性问题。Quartz有状态作业实现了org.quartz.StatefulJob接口。无状态和有状态作业的要害不同是有状态作业在每次执行时只有一个实例。大多数情况下,有状态的作业不回带来大的问题。然而,假如你有一个需要频繁执行的作业或者需要很长时间才能完成的作业,那么有状态作业可能给你带来伸缩性问题。
  
  Quartz框架的其他特征
  
  Quartz框架有一个丰富的特征集。事实上,quarts有太多特性以致不能在一种情况中全部领会,下面列出了一些有意思的特征,但没时间在此具体讨论。
  
  监听器和插件
  
  每个人都喜欢监听和插件。今天,几乎下载任何开源框架,你必定会发现支持这两个概念。监听是你创建的java类,当要害事件发生时会收到框架的回调。例如,当一个作业被调度、没有调度或触发器终止和不再打火时,这些都可以通过设置来来通知你的监听器。Quartz框架包含了调度器监听、作业和触发器监听。你可以配置作业和触发器监听为全局监听或者是特定于作业和触发器的监听。

分享到:
评论

相关推荐

    Java框架介绍Quartz从入门到进阶

    Java框架介绍Quartz从入门到进阶的文档介绍

    Java框架介绍Quartz从入门到进阶.pdf

    1. 下载Quartz框架:从Quartz官方网站下载Quartz框架的发布版本,并解压到本地目录。 2. 配置quartz.properties文件:创建一个quartz.properties文件的副本,并将其放入工程的classes目录中,以便类装载器找到它。 3...

    Quartz定时器从入门到进阶

    Quartz定时器是一个开源的作业调度框架,专为J2SE和J2EE应用程序设计,完全用Java编写。它的核心优势在于提供强大的灵活性和简单性,使得开发者可以轻松创建简单的或复杂的任务调度。Quartz支持多种特性,如数据库...

    Quartz

    ### Java框架介绍: Quartz从入门到进阶 #### 一、Quartz简介 Quartz是一个完全由Java编写的开源作业调度框架,适用于多种Java应用程序环境,包括但不限于J2SE、Web应用以及J2EE应用服务器。它提供了一种简单而灵活...

    JAVA进阶架构思维导图.rar

    从Java入门到成为一名专业的架构师,这个过程中涉及的学习内容非常广泛,包括但不限于以下几个关键领域: 1. **Java基础**: 学习Java语法,如类、对象、封装、继承、多态等概念,理解控制流程(条件语句、循环)、...

    Srping Quartz 资料多多

    "Quartz入门与提高1.ppt"可能是一个幻灯片教程,涵盖了从基础到进阶的Quartz使用。"定时任务Test.rar"可能包含了一些测试用例或示例代码,有助于理解实际应用场景。"网站地址.txt"可能提供了更多资源链接,而"quartz...

    基于Java开发的派单管理系统demo源码+项目说明+sql数据库(课程大作业).zip

    3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。在使用过程中,如有问题或建议,请及时沟通。 5.期待你能在...

    butte-java-note编程文档

    综上所述,"Butte-Java-Note编程文档"是一个全面的Java开发者学习资源,覆盖了从基础到进阶的广泛知识领域,对于想要提升Java技能的开发者来说,是一份非常宝贵的参考资料。通过阅读这份文档,开发者可以系统地提升...

    定时任务框架学习资料下篇

    在第10章"急速入门-企业级定时任务Quartz核心概念"中,你会了解到如何创建Job、Trigger,以及如何配置Scheduler来执行这些任务。Quartz提供了丰富的API,可以定义触发任务的时间规则,如cron表达式,以及任务间的...

    毕设项目基于SpringBoot+Vue开发的简易后台管理系统源码+数据库+项目说明.zip

    【3】项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 【4】如果基础还行,或热爱钻研,可基于此项目进行二次开发,DIY其他不同功能,欢迎交流...

    spring-boot-study-master.zip

    《Spring Boot深度学习指南——基于"spring-boot-study-master.zip"》 ..."spring-boot-study-master.zip"提供了丰富的示例,是学习Spring Boot的宝贵资源,无论是新手入门还是进阶提升,都能从中受益匪浅。

    spring2.0技术手册

    《spring2.0技术手册》是一本旨在帮助读者掌握Spring 2.0框架的使用和理解的书籍。...通过本书的学习,读者可以获得从基础到进阶的Spring框架使用经验,为成为一个合格的Java开发者打下坚实的基础。

    开源框架 Spring Gossip

    Spring 程式 BeanFactory、 ApplicationContext Type 2 IoC、Type 3 IoC 属性参考 自动绑定 集合物件注入 Bean 的生命周期 Bean 进阶管理 理想上对于 Bean 来说,它不需要意识到 ...

    springboot学习入门提升笔记.rar

    这份“springboot学习入门提升笔记”应该包含了从基础到进阶的全方面学习内容,非常适合那些想要快速上手或者希望深化SpringBoot理解的开发者。 SpringBoot的核心特性包括自动配置、嵌入式Web服务器、起步依赖和...

    spring-quickstart:Spring Boot 快速入门项目

    Spring Boot 是一个基于 Spring 框架的快速开发工具,旨在简化初始搭建以及开发过程。它集成了大量的常用第三方库配置,如 JDBC、MongoDB、JPA、RabbitMQ、Quartz 等,让你可以“零配置”地运行你的应用。Spring ...

    尚硅谷2018最新SpringBoot 上下 核心技术和整合,SpringCloud教学视频

    1. **Spring Boot入门**:介绍Spring Boot的起源和核心特性,如何快速创建一个Spring Boot项目,理解起步依赖和自动配置的概念。 2. **Web开发**:深入讲解了Spring Boot对Web应用的支持,包括Thymeleaf模板引擎,...

    JFinal资源

    - JFinal的插件丰富,例如Shiro安全框架插件、Swagger API文档生成插件、Quartz定时任务插件等,可以帮助开发者快速实现特定功能。 7. **实际应用场景** - JFinal适用于中小型Web项目,尤其适合个人开发者或者小...

    SpringBoot新手学习手册

    SpringBoot新手学习手册是针对Java...总之,SpringBoot新手学习手册涵盖了从基础到进阶的各个方面,是学习和实践SpringBoot的理想资源。通过阅读和实践,开发者可以快速掌握SpringBoot的核心概念和技术,提升开发效率。

    Spring.3.x企业应用开发实战(完整版).part2

    Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。  Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...

    Spring3.x企业应用开发实战(完整版) part1

    Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。  Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...

Global site tag (gtag.js) - Google Analytics