quarts这里分两种场景,一种是单独使用,另一种是集成spring.
单独使用:
Web.xml需要加上下面的配置:
<servlet>
<servlet-name>QuartzInitializer</servlet-name>
<display-name>Quartz Initializer Servlet</display-name>
<servlet-class>org.quartz.ee.servlet.QuartzInitializerServlet</servlet-class> <load-on-startup>1</load-on-startup>
<init-param>
<param-name>config-file</param-name>
<param-value>/quartz.properties</param-value>
</init-param>
<init-param>
<param-name>shutdown-on-unload</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
作用:在启动的时候加载quartz.properties的内容
配置quartz.properties的内容:
Quartz中的触发器用来告诉调度程序作业什么时候触发,两个最常用的是SimpleTrigger和CronTrigger。
SimpleTrigger为需要简单打火调度而设计。 典型地,如果你需要在给定的时间和重复次数或者两次打火之间等待的秒数打火一个作业,那么SimpleTrigger适合你。
另一方面,如果你有许多复杂的作业调度,那么或许需要CronTrigger。CronTrigger很强大,使用复杂的时间判断来使用,效果很好。
#调度器名,无关紧要,名字任意定
org.quartz.scheduler.instanceName = TestScheduler
org.quartz.scheduler.instanceId = one
# Configure ThreadPool 配置数据库连接池
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 2
org.quartz.threadPool.threadPriority = 4
org.quartz.plugin.triggHistory.class = org.quartz.plugins.history.LoggingTriggerHistoryPlugin
org.quartz.plugin.triggHistory.triggerFiredMessage = Trigger {1}.{0} fired job {6}.{5} at: {4, date, HH:mm:ss MM/dd/yyyy}
org.quartz.plugin.triggHistory.triggerCompleteMessage = Trigger {1}.{0} completed firing job {6}.{5} at {4, date, HH:mm:ss MM/dd/yyyy} with resulting trigger instruction code: {9}
org.quartz.plugin.jobInitializer.class=org.quartz.plugins.xml.JobInitializationPlugin
org.quartz.plugin.jobInitializer.fileName = quartz_job.xml
org.quartz.plugin.jobInitializer.overWriteExistingJobs = false
org.quartz.plugin.jobInitializer.failOnFileNotFound = true
org.quartz.plugin.shutdownhook.class = org.quartz.plugins.management.ShutdownHookPlugin
org.quartz.plugin.shutdownhook.cleanShutdown = true
构造cron触发器
cron 触发器规范:
Seconds Minutes Hours Day-of-month Month Day-of-Week Year
秒 分 时 天 月 周 年
0 0 10,14,16 * * ? 每天上午10点,下午2点,4点
0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时0 0 12 ? * WED 表示每个星期三中午12点
0 0 12 * * ? 每天中午12点触发
"0 15 10 ? * *" 每天上午10:15触发
"0 15 10 * * ?" 每天上午10:15触发
"0 15 10 * * ? *" 每天上午10:15触发
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发
"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发
"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发
"0 15 10 15 * ?" 每月15日上午10:15触发
"0 15 10 L * ?" 每月最后一日的上午10:15触发
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发
"*"字符被用来指定所有的值,例如,"*"在分钟字段时表示每一分钟
"?"字符在天和周字段中使用。表示没有指定值,天和周字段指定一个,但不能两个都指定为"?"
'-'字符被用来设置范围,比如"10-12"在小时字段的意义为"10点,11点,12点"
','字符被用来设置添加的值,例如在周字段设置"MON,WED,FRI"的意义即为:在周一、周三、周五激活
'#'被用在周字段。它用来指定第几个周几中激活。如:"6#3"-->月的第三个周五;"2#1"-->月的第一个周一;"4#5"-- >月的第五个周三。要注意,如果要使用#后面跟5,但当月并没有第五周相应的周天,那么job将不被执行(激活);
quartz_job.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<quartz>
<job>
<job-detail>
<name>helloworld</name>
<group>group1</group>
<job-class>Helloworld</job-class>
</job-detail>
<trigger>
<cron>
<name>test</name>
<group>group1</group>
<job-name>helloworld</job-name>
<job-group>group1</job-group>
<cron-expression>0 0/1 * * * ?</cron-expression>
</cron>
</trigger>
</job>
</quartz>
quarts和spring集成
Web.xml中加载bean.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:bean\bean*.xml</param-value>
</context-param>
配置bean_quarts.xml (quartz-all-1.8.6.jar) 和spring3.X的兼容性最好
<?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:jee="http://www.springframework.org/schema/jee"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/jee " >http://www.springframework.org/schema/jee/spring-jee-2.0.xsd">
<!-- 线程执行器配置,用于任务注册 -->
<bean id="executor"
class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="10" />
<property name="maxPoolSize" value="100" />
<property name="queueCapacity" value="500" />
</bean>
<!-- 要调用的工作类 -->
<bean id="quartzJob" class="QuartzJob"></bean>
<!--调度业务 : 定义调用对象和调用对象的方法 -->
<beanid="jobtask1" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 调用的类 -->
<property name="targetObject" ref="quartzJob" />
<!-- 调用类中的方法 -->
<property name="targetMethod" value="work1" />
</bean>
<beanid="jobtask2" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 调用的类 -->
<property name="targetObject" ref="quartzJob" />
<!-- 调用类中的方法 -->
<property name="targetMethod" value="work2" />
</bean>
<!-- 定义触发时间 -->
<bean id="doTime1" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="jobtask1" />
<!-- cron表达式 --><!-- 每隔10秒执行一次 -->
<property name="cronExpression" value="0/3 * * * * ?" />
</bean>
<bean id="doTime2" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="jobtask2" />
<property name="cronExpression" value="0/5 * * * * ?" />
</bean>
<!--设置调度 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 -->
<bean id="startQuertz" lazy-init="false" autowire="no"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="doTime1" />
<ref bean="doTime2" />
</list>
</property>
<property name="taskExecutor" ref="executor" />
</bean>
</beans>
(PS 如果要保证执行完整,间隔要设置长一点)
代码分析:
org.springframework.scheduling.quartz.SchedulerFactoryBean 是 入口:
方法: afterPropertiesSet()
<!--EndFragment-->
<!--EndFragment-->
相关推荐
quartus仿真 在EDA过程中,综合(synth踢六)是将软件描述(vHDL就其报述方式来说*仍届 软件描述j与硬件结构相联系的关键步骤,是文字描述与硬件实现的一座桥梁,是突破软 硬件屏障的有利武器。综合就是将电路的高级...
Quartus II应用初步
这篇应用笔记主要介绍了Quartus II 11.0版本的使用方法,涵盖了从项目创建到设计输入、逻辑编译检查、软件仿真以及全程综合编译等多个关键步骤。 首先,建立项目文件是设计流程的起点。创建工程时,确保顶层文件名...
关于quartus 2在基于FPGA的实验设计应用中的基本操作。。很实用。不完全
#用Quartus_II_11.0_x86破解器(内部版).exe破解C:\altera\11.0\quartus\bin下的sys_cpt.dll文件(运行Quartus_II_11.0_x86破解器(内部版).exe后,直接点击“应用补丁”,如果出现“未找到该文件。搜索该文件吗?”,...
Quartus Prime 是一款功能强大且广泛应用于 FPGA 设计的电子设计自动化(EDA)软件。下面将对 Quartus Prime 软件的界面进行介绍,并提供一些使用技巧。 1. Quartus Prime 界面介绍 Quartus Prime 的界面主要由六...
Quartus中HDMI的应用实例,用max10的芯片,挺好的,可以参考设计
Quartus II 9.0 是一种功能强大且灵活的数字电路设计工具,广泛应用于 FPGA 和 ASIC 的设计和开发。本教程将逐步指导读者学习 Quartus II 9.0 的基本应用和使用方法。 Quartus II 9.0 的介绍 Quartus II 9.0 是 ...
### Quartus II LPM 模块应用与介绍 在现代电子设计自动化(EDA)领域,Quartus II 是一款非常重要的软件工具,被广泛应用于数字逻辑电路的设计与验证。其中,LPM(Library of Parameterized Megafunctions)是...
7. **丰富的资源和支持**:除了详细的文档和教程外,Quartus II 还提供了在线帮助、应用程序说明、白皮书等多种资源,以及活跃的社区支持,帮助用户解决遇到的各种问题。 #### 三、Quartus II 使用指南 - **设计...
教程涵盖了Quartus_II的基础操作、高级特性及实例应用,适合初学者和有经验的开发者参考。 六、学习路径建议 1. 首先,了解FPGA基本原理和Quartus_II工作流程。 2. 掌握HDL语言,如VHDL或Verilog,通过实例学习基本...
#用Quartus_II_13.0_x86破解器.exe破解C:\altera\13.0\quartus\bin下的sys_cpt.dll文件(运行Quartus_II_13.0_x86破解器.exe后,直接点击“应用补丁”,如果出现“未找到该文件。搜索该文件吗?”,点击“是”,...
Quartus II是由Altera公司推出的综合型FPGA(Field-Programmable Gate Array)设计软件,它提供了从设计输入、逻辑...在现代电子系统中,FPGA因其灵活性和高性能而被广泛应用,掌握Quartus II将是进入这一领域的关键。
#用Quartus II 13.1破解器.exe破解C:\altera\90\quartus\bin下的sys_cpt.dll和quartus.exe文件(运行Quartus II 13.1破解器.exe后,直接点击“应用补丁”,如果出现“未找到该文件。搜索该文件Quartus II 13.1吗?”...
1. "stx_cookbook.pdf":这可能是一本“STX Cookbook”,STX可能是某种特定的设计或技巧集,或者是对Quartus II中某些特定功能的深入解析和应用实例。 2. "qts_qii52005.pdf":这可能是指Quartus II的某个版本(如...
Cyclone系列是Altera公司推出的低成本、低功耗FPGA系列,Cyclone 1作为入门级产品,适合初学者学习和小规模应用。它包含了可编程逻辑块、I/O单元、嵌入式存储器等多种资源,可以实现各种数字电路设计。 **蜂鸣器...
8. 设备选择:Altera(现Intel)提供了多种FPGA和CPLD产品线,如Stratix、Cyclone、MAX等,每种产品系列都有不同的性能、功耗和成本特点,以满足不同应用领域的需求。 9. 软件工具:除了Quartus II,Altera还提供了...
FPGA_Quartus_2宏功能模块应用
Quartus II是一款强大的硬件描述语言(HDL)综合、仿真、配置和编程工具,广泛应用于电子工程领域。 寄存器在计算机组成原理中是基础元件之一,它用于存储数据或指令。在FPGA设计中,寄存器通常用于暂存数据,比如在...
3. **数字信号处理:** 包括FFT(Fast Fourier Transform)处理器、滤波器、DSP(Digital Signal Processing)块等,适用于音频、图像和视频处理应用。 4. **嵌入式处理器:** Nios II处理器,是Altera提供的软核...