crontriggerbeanspring quartz为什么tomcat启动后没有马上执行

crontriggerbean  时间:2021-06-06  阅读:()

quartz定时任务一般都是调用service么

spring的配置文件applicationContext.xml ——省略spring的相关配置: Xml代码 <!-- 定时任务 --> <!-- 加入定时任务类 --> <bean id="hand" class=&.fms.web.action.CronJobHand"></bean> <!-- 任务调度拦截 --> <bean id="jobHand" class=&.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject"> <ref bean="hand"/><!-- 指定具体拦截哪个定时任务 --> </property> <property name="targetMethod"> <value>jobHand</value><!-- 指定要执行的类里面的哪个方法 --> </property> </bean> <!-- 用cron表达式定义定时任务执行时间 --> <bean id="dohand" class=&.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail"> <ref bean="jobHand"/><!-- 指明要调用哪个任务 --> </property> <!-- cron表达式 --> <property name="cronExpression"> <!-- 每天10点15点执行一次--> <value>0 0 10,15,17 * * ?</value> </property> </bean> <bean id="jobCard" class=&.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject"> <ref bean="hand"/> </property> <property name="targetMethod"> <value>jobCard</value> </property> </bean> <bean id="docard" class=&.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail"> <ref bean="jobCard"/> </property> <!-- cron表达式 --> <property name="cronExpression"> <!-- 每天9:30和14:30执行一次--> <value>0 30 9,14,16 * * ?</value> </property> </bean> <!-- 让spring来自动管理quartz --> <bean id="startQuertz" lazy-init="false" autowire="no" class=&.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="dohand"/> <ref bean="docard"/> </list> </property> </bean> 定时任务类: 补充一点:spring配置文件里面要有ponent-scan 扫描到你的定时任务类 而且在类上加@Component就行了。

我的spring版本是2.5,3.X以上更简单。

maven crontriggerbean在哪个jar包

spring-context-support jar maven 坐标问答 ??<groupId&.springframework</groupId> ??<artifactId>spring-context-support</artifactId> ??<version>3.2.17.RELEASE</version>

QuartzJobBean什么意思

A:extends QuartzJobBean方法 1:定义任务(extends QuartzJobBean) package onlyfun.bb.Quartz; .quartz.JobExecutionContext; .springframework.scheduling.quartz.QuartzJobBean; public class QuartzDemo extends QuartzJobBean { private JobData jobData; //JobData为自定义类 public void executeInternal(JobExecutionContext context){ System.out.println(jobData.getData()+" is executed"); } public JobData getJobData() { return jobData; } public void setJobData(JobData jobData) { this.jobData = jobData; } } JobData.java: package onlyfun.bb.Quartz; import java.util.Date; public class JobData { public String getData(){ return "Data from JobData at "+new Date().toString(); } } 2: 配置 <!-- use Quartz --> <bean id="someData" class="onlyfun.bb.Quartz.JobData"></bean> <bean id="jobDetailBean" class=&.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass" value="onlyfun.bb.Quartz.QuartzDemo"></property> <property name="jobDataAsMap"> <map> <entry key="jobData" value-ref="someData"></entry> </map> </property> </bean> <bean id="***TriggerBean" class=&.springframework.scheduling.quartz.SimpleTriggerBean"> <property name="jobDetail" ref="jobDetailBean"></property> <property name="repeatInterval" value="2000"></property> <property name="startDelay" value="1000"></property> </bean> <bean id="scheduledFactoryBean" class=&.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="***TriggerBean"/> </list> </property> </bean> 留意:在JobDetailBean的jobClass属性必须提供Job的类名称,而不是Job类的实例。

马踏天下Job所需的数据可以在jobDataAsMap属性中设置。

在任务的周期指定上,使用SimpleTriggerBean类来指定,与TimerTask指定方式类似。

排定Job用SchedulerFactoryBean类。

完成设置后,只要在启动Spring并读取定义文件后,计划任务就会执行。

3:测试 package onlyfun.bb.Quartz; import java.io.*; .quartz.Scheduler; .quartz.SchedulerException; .springframework.context.ApplicationContext; .springframework.context.support.ClassPathXmlApplicationContext; public class TestQuartzDemo { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml"); System.out.println("启动Task:"); System.out.println("请输进 exit 结束Task:"); //A处 BufferedReader reader=new BufferedReader(new InputStreamReader(System.in)); while(true){ if(reader.readLine().equals("exit")) break; } //此句可以放在A处 Scheduler scheduler=(Scheduler)context.getBean("scheduledFactoryBean"); try { scheduler.shutdown(); } catch (SchedulerException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } 4:测试分析: 使用SimpleTriggerBean类只能做简单Job与Job之间的执行周期指定,儿童故事假如需要在指定时间执行,可以使用CronTriggerBean类。

职场生涯最好的减肥药是什么 修改配置文件如下: <!-- use Quartz --> <bean id="someData" class="onlyfun.bb.Quartz.JobData"></bean> <bean id="jobDetailBean" class=&.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass" value="onlyfun.bb.Quartz.QuartzDemo"></property> <property name="jobDataAsMap"> <map> <entry key="jobData" value-ref="someData"></entry> </map> </property> </bean> <bean id="cronTriggerBean" class=&.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="jobDetailBean"></property> <property name="cronExpression" value="0 37-38 15 * * ?"/> </bean> <bean id="scheduledFactoryBean" class=&.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="cronTriggerBean"/> </list> </property> </bean> 留意:CronTriggerBean的cronExpression属性指定格式:至少6个时间元素,上面表示天天的15:37-38分执行1次任务。

时间元素(按照顺序): 秒(0-59): 分(0-59): 小时(0-23): 每月第几天(1-31): 月(1-12或JAN-DEC): 每星期第几天(1-7或SUN-SAT): 年(1970-2099): 其中:不用设置的用”?”. (1)每月第几天和每星期第几天是互斥的,两个只能设置1个。

假如有好几个时间点,可以使用”,”符号,例如:”0 0 10,12,14 * * ?”表示天天的10时,12时,14时执行Job. (2)对于连续时间可以使用”-”符号。

例如:”0 10,12,14 1-15 * ?”表示每月的1到15日10时,12时,14时执行Job. (3)时间格式的年可以不用制定。

例如”0 0 10,12,14 ? MON 2006”表示2006年每星期一的10时,12时,14时执行Job. B:不需要继续的任务制定方法 使用Spring不一定需要继续QuartzJobBean类来定义1个Job类,可以使用MethodInvokingJobDetailFactoryBean来直接指定执行某个对象的方法。

如何配置Spring定时器准确运行时间?

Spring中有自带任务调度框架Quartz ,直接在xml配置文件中配置就好。

一般我们使用spring定时器的时候都是配置的固定时间在spring配置文件中,如果我们有一个时间设置页面,通过这个页面设置定时器的执行时间,就可以达到动态执行的效果。

上代码: .test.action; import java.text.ParseException; import javax.annotation.Resource; .quartz.Scheduler; .quartz.SchedulerException; .springframework.scheduling.quartz.CronTriggerBean; .springframework.web.context.WebApplicationContext; .springframework.web.context.support.WebApplicationContextUtils; .opensymphony.xwork2.ActionSupport; public class TestAction extends ActionSupport{? @Resourcepublic CronTriggerBean triggerBean; ? //系统? public CronTriggerBean triggerTempBean;? @Resource?private Scheduler scheduler;? private String configTime; public String configTime(){? try {? /*得到系统设置的定时器执行时间 */System.out.println(triggerBean.getCronExpression()); /*得到指定定时器, testDoTrigger为applicationContext.xml中CronTriggerBean*/ triggerTempBean = (CronTriggerBean) scheduler.getTrigger("testDoTrigger", Scheduler.DEFAULT_GROUP); /*指定定时器的执行时间*/ System.out.println(triggerTempBean.getCronExpression()); /*将指定定时器的执行时间设置为从前台传递过来的时间*/ triggerTempBean.setCronExpression(configTime); /*让设置生效*/ scheduler.rescheduleJob("testDoTrigger", Scheduler.DEFAULT_GROUP,triggerTempBean); } catch(ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch(SchedulerException e) { // TODO Auto-generated catch block e.printStackTrace(); } return SUCCESS; } public String getConfigTime(){ return configTime; } public void setConfigTime(String configTime){ this.configTime = configTime;}

spring quartz为什么tomcat启动后没有马上执行

加上 <property name="startupDelay" value="60"/> 试一下 <bean class=&.springframework.scheduling.quartz.SchedulerFactoryBean"> <!--必须,QuartzScheduler 延时启动,应用启动后 QuartzScheduler 再启动--> <property name="startupDelay" value="60"/> <property name="triggers">

ShockHosting日本机房VPS测试点评

这个月11号ShockHosting发了个新上日本东京机房的邮件,并且表示其他机房可以申请转移到日本,刚好赵容手里有个美国的也没数据就发工单申请新开了一个,这里做个简单的测试,方便大家参考。ShockHosting成立于2013年,目前提供的VPS主机可以选择11个数据中心,包括美国洛杉矶、芝加哥、达拉斯、杰克逊维尔、新泽西、澳大利亚、新加坡、日本、荷兰和英国等。官方网站:https://shoc...

Bluehost美国虚拟主机2.95美元/月,十八周年庆年付赠送顶级域名和SSL证书

Bluehost怎么样,Bluehost好不好,Bluehost成立十八周年全场虚拟主机优惠促销活动开始,购买12个月赠送主流域名和SSL证书,Bluehost是老牌虚拟主机商家了,有需要虚拟主机的朋友赶紧入手吧,活动时间:美国MST时间7月6日中午12:00到8月13日晚上11:59。Bluehost成立于2003年,主营WordPress托管、虚拟主机、VPS主机、专用服务器业务。Blueho...

Dynadot COM特价新注册48元

想必我们有一些朋友应该陆续收到国内和国外的域名注册商关于域名即将涨价的信息。大概的意思是说从9月1日开始,.COM域名会涨价一点点,大约需要单个9.99美元左右一个。其实对于大部分用户来说也没多大的影响,毕竟如今什么都涨价,域名涨一点点也不要紧。如果是域名较多的话,确实增加续费成本和注册成本。今天整理看到Dynadot有发布新的八月份域名优惠活动,.COM首年注册依然是仅需48元,本次优惠活动截止...

crontriggerbean为你推荐
iso20000认证什么是ISO20000-IT服务管理体系水晶易表如何在win7环境和office2010环境下成功安装水晶易表eagleeye电脑进程中出现Eaglesvr这种程序,据说是一种蠕虫病毒。。。怎样杀掉?华为总裁女儿为啥姓孟任正非女儿为什么姓孟?防火墙排名什么防火墙最好qq网络硬盘怎么用qq网络硬盘微软操作系统下载微软的系统到哪下载xcelsiussap bi是什么超级播放器一共有哪些播放器?移动硬盘文件或目录损坏且无法读取移动硬盘提示文件或目录损坏且无法读取,怎么修复
便宜域名注册 .cn域名注册 查询ip地址 荣耀欧洲 安云加速器 directadmin 圣诞节促销 52测评网 卡巴斯基试用版 鲁诺 linux使用教程 512mb 中国电信测速器 塔式服务器 美国asp空间 web服务器有哪些 卡巴斯基官方下载 ddos攻击教程 天翼云主机 qq空间登陆首页 更多