Quartz怎么设置苹果多任务怎么设置

spring结合quartz的执行多任务的实现 -
- ITeye技术网站
博客分类:
博客分类:
version="1.0" encoding="UTF-8"
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"
id="businessWork" class="com.morningstar.quartz.BusinessWork"
id="reportTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"
name="targetObject" ref="businessWork"
name="targetMethod" value="generateReport"
name="concurrent" value="false"
id="emailTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"
name="targetObject" ref="businessWork"
name="targetMethod" value="sendEmail"
name="concurrent" value="false"
id="reportCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"
name="jobDetail" ref="reportTask"
name="cronExpression" value="10,15,20,25,30,35,40,45,50,55 * * * * ?"
id="emailCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"
name="jobDetail" ref="emailTask"
name="cronExpression" value="10,15,20,25,30,35,40,45,50,55 * * * * ?"
id="schdulerFactory" lazy-init="false" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"
name="triggers"
bean="reportCronTrigger"
bean="emailCronTrigger"
kobe学java
浏览: 133396 次
来自: 苏州
CommonsHttpSolrServer这个类,现在是不是没 ...
我按照你的方法试了下,tomcat6可以发布,但是访问任何网页 ...
麻烦你,如果是抄来的文章,请给出来源。谢谢
转载不注明出处
若不使用eclipse ,如何在命令行下 运行服务端程序 ?spring任务调度方法之Quartz - 一路远行 - ITeye技术网站
博客分类:
一、Quartz简介
&&& Quartz是一个开放源码项目,专注于任务调度器,提供了极为广泛的特性如持久化任务,集群和分布式任务等。Spring对Quartz的集成与其对JDK Timer的集成在任务、触发器和调度计划的声明式配置方面等都非常相似。
&&& Quartz的核心由两个接口和两个类组成:Job和Scheduler接口,JobDetail和Trigger类。不同于JDK Timer,任务不是从实现一个Job接口的类实例开始运行,实际上Quartz在需要的时候才创建job类实例。可以使用JobDetail类来包装任务状态,并传递一个信息给Job,或在一个Job的多次执行过程之间保存信息。
二、Quartz任务调度
1. 简单任务调度
&&& 在Quartz中创建一个任务并执行,只需要实现Job接口类,在其execute()方法中处理你的业务逻辑。下面举例说明。
HelloWorldJob.java
package com.learnworld.
import org.quartz.J
import org.quartz.JobExecutionC
import org.quartz.JobExecutionE
public class HelloWorldJob implements Job {
public void execute(JobExecutionContext context) throws JobExecutionException {
//实现你的业务逻辑
System.out.println("Hello!");
HelloScheduling.java
package com.learnworld.
import java.util.D
import org.quartz.JobD
import org.quartz.S
import org.quartz.SimpleT
import org.quartz.T
import org.quartz.impl.StdSchedulerF
public class HelloScheduling {
public static void main(String[] args) throws Exception {
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
scheduler.start();
JobDetail jobDetail = new JobDetail("helloWorldJob",
Scheduler.DEFAULT_GROUP, HelloWorldJob.class);
Trigger trigger = new SimpleTrigger("simpleTrigger",
Scheduler.DEFAULT_GROUP, new Date(), null,
SimpleTrigger.REPEAT_INDEFINITELY, 1000);
scheduler.scheduleJob(jobDetail, trigger);
需要说明几点:
&&& 1)开始使用StdSchedulerFactory来获取Scheduler的实例。每一个scheduler可以被启动(start)、中止(stop)和暂停(pause)。如果一个scheduler没有被启动或已经被暂停,则没有触发器会被启用,所以首先使用start()方法启动scheduler。
&&& 2)创建JobDetail实例。它的构造参数有三个,第一个是任务名,任务名可以被用作参数来应用需要暂停的任务;第二个是组名,组名可以用来引用一组被集合在一起的任务,这里采用缺省组名,每一个任务名在组内必须是唯一的;第三个参数是实现了特定任务的类。
&&& 3)创建Trigger实例。我们使用SimpleTrigger类,它提供了类似JDK Timer风格的触发器行为。它的构造参数有六个,第一个和第二个为触发器名和组名,和上面类似;第三个为任务开始时间;第四个为结束时间,如果设置为空,表示不存在结束时间;第五个为重复次数,允许你指的触发器被触发的最大次数,使用REPEAT_INDEFINITELY允许触发器可以被触发无限次;第六个是触发器运行的时间间隔,是毫秒数。
&&& 4)最后通过scheduler.scheduleJob()方法调度任务。
2. 使用JobDetail传递数据
&&& 每个JobDetail实例都有关联的JobDataMap实例,它实现了Map接口并允许通过键值来传递任务相关的数据。任务也可以修改JobDataMap中的数据,在同一任务的多次执行之间传递数据。下面举例说明。
MessageJob.java
package com.learnworld.
import java.util.M
import org.quartz.J
import org.quartz.JobExecutionC
import org.quartz.JobExecutionE
public class MessageJob implements Job {
public void execute(JobExecutionContext context) throws JobExecutionException {
Map properties = context.getJobDetail().getJobDataMap();
System.out.println("Previous Fire Time: " + context.getPreviousFireTime());
System.out.println("Current Fire Time: " + context.getFireTime());
System.out.println("Next Fire Time: " + context.getNextFireTime());
System.out.println(properties.get("message"));
MessageScheduling.java
package com.learnworld.
import java.util.D
import java.util.M
import org.quartz.JobD
import org.quartz.S
import org.quartz.SimpleT
import org.quartz.T
import org.quartz.impl.StdSchedulerF
public class MessageScheduling {
public static void main(String[] args) throws Exception {
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
scheduler.start();
JobDetail jobDetail = new JobDetail("messageJob",
Scheduler.DEFAULT_GROUP, MessageJob.class);
Map map = jobDetail.getJobDataMap();
map.put("message", "This is a message from Quartz");
Trigger trigger = new SimpleTrigger("simpleTrigger",
Scheduler.DEFAULT_GROUP, new Date(), new Date("Sat, 12 Aug :00 GMT+0430"),
SimpleTrigger.REPEAT_INDEFINITELY, 5000);
scheduler.scheduleJob(jobDetail, trigger);
3. 使用CronTrigger
&& 上面提到了SimpleTrigger类,它提供了类似JDK Timer风格的触发器功能。Quartz的出色在于它使用CronTrigger提供了对复杂触发器的支持。
&&& 一个CronTrigger表达式,包含六个必须组件和一个可选组件。关于cron表达式,可以参考这篇文档:
&& 下面举例说明CronTrigger的使用。
CronWithCalendarScheduling.java
package com.learnworld.
import java.util.C
import java.util.D
import java.util.M
import org.quartz.CronT
import org.quartz.JobD
import org.quartz.S
import org.quartz.SimpleT
import org.quartz.T
import org.quartz.impl.StdSchedulerF
import org.quartz.impl.calendar.HolidayC
public class CronWithCalendarScheduling {
public static void main(String[] args) throws Exception {
Calendar cal = Calendar.getInstance();
cal.set(2010, Calendar.OCTOBER, 31);
HolidayCalendar calendar
= new HolidayCalendar();
calendar.addExcludedDate(cal.getTime());
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
scheduler.start();
scheduler.addCalendar("calendar", calendar, true, false);
JobDetail jobDetail = new JobDetail("messageJob",
Scheduler.DEFAULT_GROUP, MessageJob.class);
Map map = jobDetail.getJobDataMap();
map.put("message", "This is a message from Quartz");
String cronExpression = "3/5 * 17,18,19,20 * * ?";
Trigger trigger = new CronTrigger("cronTrigger",
Scheduler.DEFAULT_GROUP, cronExpression);
scheduler.scheduleJob(jobDetail, trigger);
需要说明几点:
&&& 1)创建了HolidayCalendar实例,使用addExcluderData()方法排除了日。再使用addCalendar()方法,将这个Calendar加入到Scheduler中。
&&& 2)这个cron表达式的含义是,每天17:00-20:59之间每一分钟的第三秒开始运行,每五秒执行一次。
三. Spring对Quartz调度的支持
&&& Spring对Quartz集成与其对JDK Timer调度集成类似,你可以在配置文件中配置任务调度。仅需要在程序里加载ApplicationContext,Spring会自动启动调度器。
quartz.xml
&?xml version="1.0" encoding="UTF-8"?&
&!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"&
&bean id="job"
class="org.springframework.scheduling.quartz.JobDetailBean"&
&property name="jobClass"&
&value& com.learnworld.quartz.MessageJob &/value&
&/property&
&property name="jobDataAsMap"&
&entry key="message"&
&value&This is a message from Spring Quartz configuration!&/value&
&/property&
&bean id="trigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"&
&property name="startDelay"&
&value&1000&/value&
&/property&
&property name="repeatInterval"&
&value&3000&/value&
&/property&
&property name="jobDetail"&
&ref local="job" /&
&/property&
&bean id="schdulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"&
&property name="triggers"&
&ref local="trigger" /&
&/property&
SimpleSpringQuartzIntegration.java
package com.learnworld.
import org.springframework.context.ApplicationC
import org.springframework.context.support.FileSystemXmlApplicationC
public class SimpleSpringQuartzIntegration {
public static void main(String[] args) {
ApplicationContext ac = new FileSystemXmlApplicationContext("src/conf/quartz.xml");
需要说明几点:
&&& 1)采用JobDetailBean类,它扩展了JobDetai类,采用可声明方式配置任务数据。缺省情况下,采用&bean&标签的id作为任务名,使用缺省组作为组名,通过jobDataAsMap作为配置任务数据。
&&& 2)建立触发器。可以选择SimpleTriggerBean或CronTriggerBean类。SimpleTriggerBean缺省情况下把可重复执行次数设为无限。
&&& 3)创建schedulerFactory。缺省情况下,SchedulerFactoryBean创建一个StdSchedulerFactory的实例,后者创建Scheduler的实现。可以通过设置schedulerFactoryClass属性来覆盖这个行为,需要继承SchedulerFactory接口来实现你自己的版本。
论坛回复 /
(11 / 17226)
[ 13:47:22]ERROR org.springframework.web.context.ContextLoader(line:215) -Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'quartzScheduler' defined in file [F:\Project\My2Space\.metadata\.plugins\com.genuitec.eclipse.easie.tomcat.myeclipse\tomcat\webapps\quartzMonitor\WEB-INF\classes\spring\applicationContext-quartz.xml]: Invocation o nested exception is org.quartz.SchedulerConfigException: Failure occured during job recovery. [See nested exception: org.quartz.impl.jdbcjobstore.LockException: Failure obtaining db row lock: 第 1 行: 只有 DECLARE CURSOR 才允许使用 FOR UPDATE 子句。 [See nested exception: com.microsoft.sqlserver.jdbc.SQLServerException: 第 1 行: 只有 DECLARE CURSOR 才允许使用 FOR UPDATE 子句。]]
这个错误是为什么啊???
能否把你的配置文件贴出来,看上去应该是任务配置的数据源和已有的其他数据源冲突了。
没看出来HelloWorldJob跟MessageScheduler有什么关系??楼主是否拷错了,少个HelloScheduler?
谢谢提醒,我把HelloScheduler拷贝成MessageScheduler,已经修改过来。
learnworld
浏览: 115537 次
来自: 南京
用webloginc或者websphere容器的时候 jps抄 ...
赞,忍不住转载分享一下
api callback error!是怎么回事,谢谢
java struts框架demo使用实例教程源代码下载,地址 ...后使用快捷导航没有帐号?
查看: 6838|回复: 5
单纯小豆儿
Lv.4, 积分 286, 距离下一级还需 714 积分
UID3336636帖子威望0 多玩草10 草
求插件大神。怎么把这2个东西去掉啊????在线等
10:19:28 上传
Lv.2, 积分 29, 距离下一级还需 21 积分
UID帖子威望0 多玩草0 草
10:36:17 上传
10:36:17 上传
10:36:18 上传
Lv.3, 积分 160, 距离下一级还需 90 积分
UID帖子威望0 多玩草0 草
hao r .但愿轻狂 发表于
单纯小豆儿
Lv.4, 积分 286, 距离下一级还需 714 积分
UID3336636帖子威望0 多玩草10 草
下边那个 时间轴去掉了 但是 监视自己血量的那个黄色条还是没能去掉
Lv.2, 积分 29, 距离下一级还需 21 积分
UID帖子威望0 多玩草0 草
你下载的单体插件自带的状态条,不能关闭的。你可以把它移动到空闲的地方就可以了。
Lv.2, 积分 29, 距离下一级还需 21 积分
UID帖子威望0 多玩草0 草
或者在角色登陆界面插件管理那里,把这个插件给关掉。找到开头为“Quartz”的插件然后把勾打掉就关闭了。
需要金钱:1100
手机盒子客户端点击或扫描下载
Powered by2008年2月 总版技术专家分月排行榜第一2008年1月 总版技术专家分月排行榜第一
2008年7月 总版技术专家分月排行榜第三2008年6月 总版技术专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。温馨提示:
Quartz入门例子简介 从入门到菜鸟(二)
发布: wwwcomy|
浏览: 5602
本节补充一些SimpleTrigger的API使用,文章一次性写的太长会大大降低可阅读性,所以还是少食多餐吧。 顺大便回顾一下Quartz的基本使用方法,联系windows自带的计划任务,假想场景如下: 1.我要让电脑查杀病毒(对应Quartz: 实现Job接口的execute方法,后期通过反射实例化JobDetail对象)。2.我想让电脑在五分钟之后做查杀病毒这个job(对应Quartz:通过TriggerBuilder来new出一个时间为五分钟之后的Trigger)。3.把上面我想象到的时间:五分钟之后;任务:查杀病毒 放到windows的定时任务当中,点击确定(对应Quartz:通过SchedulerFactory拿到Scheduler实例,将JobDetail与Trigger通过scheduleJob方法注册到Scheduler中,再调用start方法就可以了)。下面先对MyJob做个小改动,让我们定义的任务Key打印出来。 Java代码public class MyJob implements Job { & & &@Override & & &public void execute(JobExecutionContext context) throws JobExecutionException { & & & & & & & & & & & & & &String jobName = context.getJobDetail().getKey().getName(); & & & & &System.out.println(&任务Key:& + jobName + & 正在执行,执行时间: & + Calendar.getInstance().getTime()); & & &} &} &接下来这个小例子是QuartzMultiJobTest.java,是个多任务例子,比如说,我想让我的任务五秒钟后执行,并且开始执行之后,隔三秒钟再执行一次,再隔三秒钟再执行一次,实现如下,注意@NOTICE标记: Java代码public class QuartzMultiJobTest { & & &public static void main(String[] args) throws Throwable { & & & & &SchedulerFactory factory = new StdSchedulerFactory(); & & & & &Scheduler scheduler = factory.getScheduler(); & & & & & & & & & & & & & & &Date runTime = DateBuilder.nextGivenSecondDate(null, 13); & & & & &JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity(&job1&, &group1&).build(); & & & & &Trigger trigger = TriggerBuilder.newTrigger().withIdentity(&trigger1&, &group1&).startAt(runTime).build(); & & & & &scheduler.scheduleJob(job, trigger); & & & & & & & & & & & & & & &job = JobBuilder.newJob(MyJob.class).withIdentity(&job2&, &group1&).build(); & & & & &trigger = TriggerBuilder.newTrigger().withIdentity(&trigger2&, &group1&).startAt(runTime).build(); & & & & &scheduler.scheduleJob(job, trigger); & & & & & & & & & & &job = JobBuilder.newJob(MyJob.class).withIdentity(&job3&, &group1&).build(); & & & & &trigger = TriggerBuilder.newTrigger().withIdentity(&trigger3&, &group1&) & & & & & & & & &.withSchedule(SimpleScheduleBuilder.simpleSchedule().withRepeatCount(5).withIntervalInSeconds(3)).startAt(runTime).build(); & & & & &scheduler.scheduleJob(job, trigger); & & & & & &scheduler.start(); & & & & &try { & & & & & & & & & & & & & &Thread.sleep(20L * 1000L); & & & & &} catch (Exception e) { & & & & & &} & & & & &scheduler.shutdown(true); & & &} &} &主要需要理解的是 1.DateBuilder.nextGivenSecondDate这个方法的执行时间 2.同一个任务可以多次注册 3.重复执行需要在Trigger的设置里面加入SimpleScheduleBuilder,设置重复次数和重复时间即可。repeatForever()方法永远表示一直重复执行。 4.有三个API用法没放到例子中:
&a.scheduler.addJob(job, true); //无trigger注册,表示任务立即执行。
&b.scheduler.rescheduleJob(trigger.getKey(), trigger); //在scheduler.start之后调用,可以在job开始后重新定义trigger,然后重新注册。
&c.scheduler.getMetaData().getNumberOfJobsExecuted() 可以在shutdown后取出执行的任务数量,一些基本信息封装在SchedulerMetaData对象中。 这节比较简单。本文链接:,转自:
如非特别注明,本站内容均为原创,转载请务必注明作者和原始出处。
本文地址:
DUBBO是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,本教程带你入门学习dubbo框架的相关知识
RabbitMQ是一个开源的,在AMQP基础上完整的,可复用的企业消息系统。支持主流的操作系统,Linux、Windows、MacOX等。多种开发语言支持,Java、Python、Ruby、.NET、PHP、C/C++、node.js等。本教程带你学习RabbitMQ环境搭建、RabbitMQ简单队列、work队列、发布订阅消息、各种Exchange应用、与spring整合等
本教程详细讲解Java8的新特新,结合简单的示例代码来讲解如何使用默认接口方法,lambda表达式,方法引用以及多重Annotation,同时你将会学到JAVA8最新的API上的改进,比如流,函数式接口,Map以及全新的日期API
WebSocket 规范的目标是在浏览器中实现和服务器端双向通信.双向通信可以拓展浏览器上的应用类型,例如实时的数据推送(股票行情),游戏,聊天/im 等.本教程通过java简单的示例带你快速学会WebSocket编程
JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互。本专题详细讲解json、jackson、fastjson等工具包的操作教程
junit基本介绍,hamcrest和testSuite介绍,基于测试开发讲解和cobertura框架介绍,stub和mock简介,dbunit的使用,dbunit实际运用,easymock的使用,easymock的实际应用,利用easymock测试简单的servlet,cactus的使用,基于Jetty的cactus的使用
国际化(internationalization)又称为 i18n(读法为i 18 n,据说是因为internationalization(国际化)这个单词从i到n之间有18个英文字母,i18n的名字由此而来)
freemarker是现在企业中用得最多的模板引擎,可以根据模板生成相当的静态页面等
Struts2,Struts2教程,Struts2学习,Struts2实例,Struts2视频教程
Hibernate,Hibernate教程,Hibernate学习,Hibernate实例,Hibernate视频教程
spring,spring教程,spring学习,spring实例,spring视频教程
java,视频教程,java视频教程,java web 视频教程,java基础视频教程
大家都在看

我要回帖

更多关于 ipad多任务分屏设置 的文章

 

随机推荐