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">

€4.99/月Contabo云服务器,美国高性价比VPS/4核8G内存200G SSD存储

Contabo是一家运营了20多年的欧洲老牌主机商,之前主要是运营德国数据中心,Contabo在今年4月份增设新加坡数据中心,近期同时新增了美国纽约和西雅图数据中心。全球布局基本完成,目前可选的数据中心包括:德国本土、美国东部(纽约)、美国西部(西雅图)、美国中部(圣路易斯)和亚洲的新加坡数据中心。Contabo的之前国外主机测评网站有多次介绍,他们家的特点就是性价比高,而且这个高不是一般的高,是...

ProfitServer折优惠西班牙vps,荷兰vps,德国vps,5折优惠,不限制流量

profitserver正在对德国vps(法兰克福)、西班牙vps(马德里)、荷兰vps(杜廷赫姆)这3处数据中心内的VPS进行5折优惠促销。所有VPS基于KVM虚拟,纯SSD阵列,自带一个IPv4,不限制流量,在后台支持自定义ISO文件,方便大家折腾!此外还有以下数据中心:俄罗斯(多机房)、捷克、保加利亚、立陶宛、新加坡、美国(洛杉矶、锡考克斯、迈阿密)、瑞士、波兰、乌克兰,VPS和前面的一样性...

Hostiger发布哥伦布日提供VPS主机首月七折优惠 月费2.79美元

Hostiger商家我们可能以前也是有见过的,以前他们的域名是Hostigger,后来进行微调后包装成现在的。而且推出Columbus Day哥伦布日优惠活动,提供全场的VPS主机首月7折月付2.79美元起的优惠。这里我们普及一下基础知识,Columbus Day ,即为每年10月12日,是一些美洲国家的节日,纪念克里斯托弗·哥伦布在北美登陆,为美国的联邦假日。Hostiger 商家是一个成立于2...

crontriggerbean为你推荐
腾讯举报中心如何举报QQ号?mac地址克隆怎么克隆MAC地址?mac地址克隆路由器中的MAC地址克隆,是什么,干嘛用的企业资源管理系统企业内部管理系统有哪些华为总裁女儿为啥姓孟总裁文女主姓孟,女主父母抱错孩子,后来将错就错,养父母对女主很好华为总裁女儿为啥姓孟任正非女儿为什么姓孟?模式识别算法模式识别、神经网络、遗传算法、蚁群算法等等人工智能算法需要哪些数学知识?xcelsiussap bi是什么单元测试规范单元场景测试是如何进行的?kjavaKJAVA业务信息费是什么东西啊,我怎么会被莫莫名其妙的扣掉11元啊
高防服务器租用 南通服务器租用 代理域名备案 赵容 mediafire下载工具 56折 网通服务器ip 华为4核 国外免费全能空间 太原网通测速平台 申请网页 七夕快乐英语 联通网站 视频服务器是什么 架设邮件服务器 重庆电信服务器托管 免费的域名 德隆中文网 申请免费空间 godaddy空间 更多