quartz

quartz定时执行任务,并配置web.xml

匿名 (未验证) 提交于 2019-12-03 00:18:01
零、废话: 一、maven依赖: < dependency > < groupId > org.quartz-scheduler </ groupId > < artifactId > quartz </ artifactId > < version > 2.2.3 </ version > </ dependency > < dependency > < groupId > org.quartz-scheduler </ groupId > < artifactId > quartz-jobs </ artifactId > < version > 2.2.3 </ version > </ dependency > 二、Doem: TimingTaskSchedule需要实现ServletContextListener接口,监听后启动项目时的启动类 package com.thinkgem.jeesite.modules.sys.listener; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class TimingTaskSchedule implements ServletContextListener{ //

quartz2.3.0(十四)trigger触发器优先级排序

匿名 (未验证) 提交于 2019-12-02 23:52:01
job任务类: package org.quartz.examples.example14; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; /** * 一个简单的job任务 */ public class TriggerEchoJob implements Job { private static final Logger LOG = LoggerFactory.getLogger(TriggerEchoJob.class); // 必须要有public修饰的无参构造函数 public TriggerEchoJob() { } // 任务执行方法 public void execute(JobExecutionContext context) throws JobExecutionException { LOG.info("任务执行。TRIGGER: " + context.getTrigger().getKey()); } } 调度器类: package org.quartz.examples

quartz 创建 定时任务写法。

匿名 (未验证) 提交于 2019-12-02 23:51:01
package xxxxxxxxxx; import com.cjy.api.ext.quartz.CjyJobFactory; import org.quartz.*; import org.quartz.impl.StdSchedulerFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** * <b> quartz job 工具类</b><br/> * <p>通过 {@link JobUtil#scheduleJob(String, Class, String)} 方法, 创建一个定时任务</p> * * @author Zero * @date 2019-07-23 09:20 */ @Component public class JobUtil { private static Scheduler scheduler; private static final Logger LOGGER = LoggerFactory.getLogger(JobUtil.class);

Quartz Cron表达式

匿名 (未验证) 提交于 2019-12-02 23:49:02
原文: https://www.cnblogs.com/shihaiming/p/10469157.html Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。Jobs可以做成标准的Java组件或 EJBs。 下面为每周一上午10点15分执行任务 0 15 10 ? * MON 每月10号9点15分钟执行任务 0 15 9 10 * ? 其它规则附录表 表示式 说明 "0 0 12 * * ? " 每天12点运行 “0 15 10 ? * *” 每天10:15运行 “0 15 10 * * ?” 每天10:15运行 “0 15 10 * * ? *” 每天10:15运行 “0 15 10 * * ? 2008” 在2008年的每天10:15运行 “0 * 14 * * ?” 每天14点到15点之间每分钟运行一次,开始于14:00,结束于14:59。 “0 0/5 14 * * ?” 每天14点到15点每5分钟运行一次,开始于14:00,结束于14:55。 “0 0/5 14,18 * * ?” 每天14点到15点每5分钟运行一次,此外每天18点到19点每5钟也运行一次。 “0 0-5 14 *

Quartz任务调度学习

匿名 (未验证) 提交于 2019-12-02 23:47:01
Quartz Quartz是Java领域最著名的开源任务调度工具,是一个任务调度框架,通过触发器设置作业的定时运行规则,来执行定时任务。其中quartz集群通过故障切换和负载平衡的功能,能给调度器带来高可用性和伸缩性。 Quartz提供了极为广泛的特性如持久化任务,集群和分布式任务等 Quartz框架主要核心组件包括: 1.Scheduler任务调度 是最核心的概念,需要把JobDetail和Trigger注册到scheduler中,才可以执行。 工厂模式,组装各个组件 sched.scheduleJob(job, trigger); 2.Job任务,JobExecutionContext类提供调度上下文的各种信息 其实Job是接口,其中只有一个execute方法,我们只需要 implements 此接口,重写 execute(*) 方法。 实现Job接口的类还可以使用注解进行修饰 @DisallowConcurrentExecution:此注解表示不允许这个Job并发执行 @PersistJobDataAfterExecution:此注解表示当这个Job的execute方法执行成功后,更新并存储它所持有的JobDetail属性中JobDataMap。如果使用这个注解,强烈建议也使用@DisallowConcurrentExecution,因为并发执行过程中

quartz.net定时任务

匿名 (未验证) 提交于 2019-12-02 23:47:01
安装quartz包版本2.6.1 1 public class TimingJob : IJob 2 { 3 public void Execute(IJobExecutionContext context) 4 { 5 //将要定时执行的逻辑代码写于此处 6 systemState = false; 7 } 8 } 执行任务的代码 1 ISchedulerFactory sf = new StdSchedulerFactory(); 2 IScheduler scheduler = sf.GetScheduler(); 3 4 IJobDetail job = JobBuilder.Create<TimingJob>().WithIdentity("job1", "mygroup").Build(); 5 6 ITrigger trigger = TriggerBuilder.Create().StartAt(DateTime.Now.AddSeconds(5)).WithCronSchedule("0 0 1/3 * * ? ").Build(); 7 8 scheduler.ScheduleJob(job, trigger); 9 scheduler.Start(); 10 11 QuartzState = true; 开启运行 时间(Cron)表达式: https:/

Quartz配置Springboot自带连接池Hikaricp

匿名 (未验证) 提交于 2019-12-02 23:43:01
Quartz默认是使用C3p0作为连接池。C3p0现在比较老,性能也不佳。很多公司都是使用阿里的Druid,网上有相关的配置教程。 既然有HikariCp连接池,就直接用呗。但是在网上找了一圈,没有相应的解决办法,只能自己跟源码了。 从PoolingConnectionProvider中找到了hikariCp,跟进去看看。看到没有,条件判断选择一个连接池hikariCp或C3p0。再跟下去看看。 跟着poolingProvider跳到了属性获取这一步。POOLING_PROVIDER 这个好眼熟,点进去一看 就是最上面的 String POOLING_PROVIDER = "provider"; 再看一下这个 pp 是什么。原来是PropertiesParser 属性解析器。再进一步看看这个属性的前缀 PROP_DATASOURCE_PREFIX 发现: public static final String PROP_DATASOURCE_PREFIX = "org.quartz.dataSource"; 谜底揭晓,把前面串起来,使用配置如下 文章来源: https://blog.csdn.net/weixin_38553453/article/details/91993066

Quartz每次调度时被执行两次

匿名 (未验证) 提交于 2019-12-02 23:40:02
前言: 先说一下,项目背景。由于组内某成员在用Maven搭建项目时不规范,导致项目的名称与实际访问项目名称不一致。 在部署项目时,必需要配一下虚拟路径,映射到那个项目所在目录下去,才能正常访问。 举个例子:项目名称叫student-web,部署到Tomcat-webapps下,本地环境正常情况下的访问url应该是: 127.0.0.1:8080/student-web 而实际访问的url需要这样: 127.0.0.1:8080/student 0x001: 初探 那首先想到问题的解决方案就是在Tomcat的server.xml内配置虚拟路径,来映射到实际项目。比如这样: 1 <Host …> 2 3 呐,一开始以为这样问题就解决了。后来发现,实则不是。这样做的后果是项目会被容器实例化两次。 0x002: why? 首先需要了解标签中的appBase属性和标签中的docBase属性的作用和区别是什么? appBase属性:这个目录下面的子目录将自动被部署为web应用,且war文件将被自动解压缩并部署为web应用(默认为Tomcat下webapps目录)注意这句话所说的每件(个)事(点)都可以被重新配置或取消。 docBase属性: docBase属性位于标签中,而标签的作用是用于指向不在webapps下的应用的所在目录

Quartz每次调度时被执行两次

匿名 (未验证) 提交于 2019-12-02 23:40:02
[关键字:重复执行、重复调用、每次执行两次、执行2次] 前言: 先说一下,项目背景。由于组内某成员在用Maven搭建项目时不规范,导致项目的名称与实际访问项目名称不一致。 在部署项目时,必需要配一下虚拟路径,映射到那个项目所在目录下去,才能正常访问。 举个例子:项目名称叫student-web,部署到Tomcat-webapps下,本地环境正常情况下的访问url应该是: 127.0.0.1:8080/student-web 而实际访问的url需要这样: 127.0.0.1:8080/student 0x001: 初探 那首先想到问题的解决方案就是在Tomcat的server.xml内配置虚拟路径,来映射到实际项目。比如这样: 1 <Host .......> 2 <Context path="/student" docBase="D:\apache-tomcat\webapps\student-web" reloadable="true"/> 3 </Host> 呐,一开始以为这样问题就解决了。后来发现,实则不是。 这样做的 后果是项目会被容器实例化两次。 0x002: why? 首先需要了解<Host>标签中的appBase属性和<Context>标签中的docBase属性的作用和区别是什么? appBase属性:这个目录下面的子目录将自动被部署为web应用