任务调度Quartz初探Demo(二)
来源:互联网 发布:ubuntu 配置ip地址 编辑:程序博客网 时间:2024/06/05 07:09
上篇博客任务调度Quartz初探Demo(一) 说了一些关于Quartz的理论知识,这里写一个完整的Demo。
工程结构如下图:
1 pom.xml
此处请注意Spring使用的版本与Quartz所使用的版本。
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.fan.test.xml</groupId> <artifactId>xmlTest</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>xstream</groupId> <artifactId>xstream</artifactId> <version>1.2.2</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>3.2.16.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>3.2.16.RELEASE</version> </dependency> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>1.8.5</version> </dependency> </dependencies></project>
2 TypeConfig.java
package org.fan.test.xstream;import java.util.List;/** * Created by fan on 16-1-18. */public class TypeConfig { int type; //String datas; long[] datas; public int getType() { return type; } public void setType(int type) { this.type = type; } public long[] getDatas() { return datas; } public void setDatas(long[] datas) { this.datas = datas; }}
3 TypeConfigList.java
package org.fan.test.xstream;import java.util.List;/** * Created by fan on 16-1-18. */public class TypeConfigList { List<TypeConfig> typeConfigList; public List<TypeConfig> getTypeConfigList() { return typeConfigList; } public void setTypeConfigList(List<TypeConfig> typeConfigList) { this.typeConfigList = typeConfigList; }}
4 XmlParserJob.java
package org.fan.test.xstream;import com.thoughtworks.xstream.XStream;import com.thoughtworks.xstream.io.xml.DomDriver;import org.quartz.Job;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;import org.springframework.context.ApplicationContext;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.util.Map;/** * Created by fan on 16-1-25. */public class XmlParserJob implements Job { static XStream xStream = new XStream(new DomDriver()); TypeConfigList typeConfigList; FileInputStream pusherInputStream = null; static { xStream.alias("TypeConfigs", TypeConfigList.class); xStream.alias("TypeConfig", TypeConfig.class); xStream.addImplicitCollection(TypeConfigList.class, "typeConfigList"); } public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { System.out.println("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"); Map dataMap = jobExecutionContext.getJobDetail().getJobDataMap(); String size = (String) dataMap.get("size"); System.out.println("size = " + size); //如果public class XmlParserJob implements StatefulJob,则本次执行修改JobDataMap的值,对下次执行是可见的。请看文末的运行结果。 //dataMap.put("size", "50"); System.out.println("dataMap put ok"); Map dataMap2 = jobExecutionContext.getJobDetail().getJobDataMap(); String size2 = (String) dataMap2.get("size"); System.out.println("size2 = " + size2); Map triggerDataMap = jobExecutionContext.getTrigger().getJobDataMap(); System.out.println("count = " + triggerDataMap.get("count")); ApplicationContext applicationContext = (ApplicationContext) dataMap.get("applicationContext"); String path = XmlParser.class.getResource("/").getPath(); try { pusherInputStream = new FileInputStream(path + "config.xml"); } catch (FileNotFoundException e) { e.printStackTrace(); } typeConfigList = (TypeConfigList) xStream.fromXML(pusherInputStream); for (TypeConfig typeConfig : typeConfigList.getTypeConfigList()) { long[] datas = typeConfig.getDatas(); for (int i = 0; i < datas.length; i++) { System.out.println(datas[i]); } } }}
5 Main.java
package org.fan.test.xstream;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;/** * Created by fan on 16-1-25. */public class Main { public static void main(String[] args) { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); }}
6 applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd "> <bean id="xmlParserJob" class="org.springframework.scheduling.quartz.JobDetailBean" p:jobClass="org.fan.test.xstream.XmlParserJob" p:applicationContextJobDataKey="applicationContext"> <property name="jobDataAsMap"> <map> <entry key="size" value="10"/> </map> </property> </bean> <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean" p:jobDetail-ref="xmlParserJob" p:startDelay="1000" p:repeatInterval="2000" p:repeatCount="100"> <property name="jobDataAsMap"> <map> <entry key="count" value="22"/> </map> </property> </bean> <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="simpleTrigger"/> </list> </property> <property name="schedulerContextAsMap"> <map> <entry key="timeout" value="30"/> </map> </property> </bean></beans>
7 config.xml
<?xml version="1.0" encoding="UTF-8"?><TypeConfigs> <TypeConfig> <type>1</type> <datas> <long>123</long> <long>321</long> <long>44444</long> </datas> </TypeConfig> <TypeConfig> <type>2</type> <datas> <long>7777</long> <long>88888845</long> </datas> </TypeConfig></TypeConfigs>
8 运行结果
(1)运行之后,改变target目录下的config.xml可以看到实时的数值变化。
(2)如果XmlParserJob实现了StatefulJob接口
public class XmlParserJob implements StatefulJob
则本次执行修改JobDataMap的值,对下次执行是可见的。运行结果如下所示:
0 0
- 任务调度Quartz初探Demo(二)
- 任务调度Quartz初探Demo(一)
- 任务调度Quartz初探Demo(三)
- 二、Quartz任务调度--集群
- Quartz+Spring 分布式定时任务调度(二)- 集群配置
- quartz初探(二)
- spring整合quartz定时任务(附demo)(二)
- Quartz任务调度(1)
- Quartz学习笔记(二) 转自 learnworld 之 spring任务调度方法之Quartz (推荐)
- [译]Java定时任务调度-Quartz文档(二)Quartz API、Job & Scheduler
- quartz的运用(二):整合spring实现quartz任务调度配置
- 企业级任务调度框架Quartz 二 -下载和安装Quartz
- quartz简单demo(一个简单易用的任务调度开源框架)
- Quartz 集成Spring实现简单的任务调度Demo
- 任务调度quartz(二)一个简单的调度平台的实现
- Java任务调度框架Quartz入门教程指南(二) 使用job、trigger、schedule调用定时任务
- Java任务调度框架Quartz入门教程指南(二) 使用job、trigger、schedule调用定时任务
- 【Quartz】Quartz任务调度入门
- ViewPager切换动画PageTransformer使用
- Mindjet MindManager 出现Runtime Error解决方案
- Android 中日期的获取 获取往后 一周的时间
- C#事件与委托详解【精华 多看看】
- iOS学习笔记58-iOS- 全方位解析.crash文件崩溃报告
- 任务调度Quartz初探Demo(二)
- Android LayoutInflater详解
- 如何自学Android编程
- 为什么说DOM操作很慢
- K-th Number (POJ_2104) 划分树
- 将一个句子中的单词逆序
- 解决ScrollView嵌套ListView问题的四种方案
- Android的一些设计思想(201603)
- HttpClient的通信