- 浏览: 1068412 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (639)
- 服务器配置篇 (58)
- hibernate篇 (14)
- spring篇 (33)
- struts篇 (28)
- JS篇 (46)
- 其他技术篇 (46)
- 数据库集群配置 (6)
- JAVA基础相关 (48)
- 分布式框架HadHoop的应用 (2)
- FLEX篇 (8)
- SQLSERVER技术 (32)
- Android学习 (13)
- amchart学习笔记 (1)
- openfire+smark搭建即时通讯 (9)
- Linux学习 (18)
- Oracle数据库 (15)
- 网站优化技术 (12)
- mysql数据库 (2)
- 项目学习总结 (18)
- 工具类(JAVA) (12)
- 工具类(JS) (2)
- 设计模式 (10)
- Lucene学习 (24)
- EJB3学习 (6)
- Sphinx搜索引擎 (3)
- 工作中用到的软件小工具 (5)
- .NET (49)
- JAVA 连接SQLSERVER2008步骤 (1)
- MongoDB (19)
- Android手机开发 (3)
- Maven (6)
- vue (9)
- Shiro (4)
- mybatis (3)
- netty框架 (1)
- SpringCloud (3)
- spring-cloud (7)
- Git (1)
- dubbo (2)
- springboot (13)
- rocketmq (1)
- git学习 (2)
- kafka服务器 (2)
- linux (10)
- WEB系统辅助项目 (1)
- jenkins (2)
- docker (4)
- influxdb (3)
- python (2)
- nginx (1)
最新评论
-
jiangfuofu555:
这样数据量大,效率怎么样?
sqlserver 实现分页的前台代码 以及后台的sqlserver语句 -
w156445045:
博主请问下,如何做到实时的刷新呢,
另外我后台是Java 谢谢 ...
web 版本的汽车仪表盘,非常好看。还有各种图形 -
jackyin5918:
<transportConnector name=&qu ...
ActiveMQ的activemq.xml详细配置讲解 -
握着橄榄枝的人:
你这个不是spring1.x的吧
spring1.x使用AOP实例 -
xiaophai:
全乱套了!
openfire+spark搭建完美的及时通讯
当我在项目中用到任务调用的时候,有必要在每次调用任务和任务出现错误的时候有详细的记录过程。在这个时候我想到了监听器的使用。
Quartz实现自己的JobListener和TriggerListener
我们是能对Job和Trigger创建自己的监听器的.
MyTriggerListener:
上面两个类只要注意name是必须的就可以了.
注意:
这时我们看到输出:
我们自己的监听器已经被执行了.
MyTriggerListener:
package com;
import org.quartz.JobExecutionContext;
import org.quartz.Trigger;
import org.quartz.TriggerListener;
/** *//**
*
* @author zdw
*
*/
public class MyTriggerListener implements TriggerListener
{
public String getName()
{
return "myTriggerListener";
}
public void triggerComplete(Trigger trigger, JobExecutionContext jeContext,
int arg2)
{
System.out.println("triggerName:" + trigger.getName());
System.out.println("complete");
}
public void triggerFired(Trigger arg0, JobExecutionContext arg1)
{
System.out.println("fire");
System.out.println("trigger" + arg0.getGroup());
}
public void triggerMisfired(Trigger arg0)
{
System.out.println("triggerMisfired");
}
public boolean vetoJobExecution(Trigger arg0, JobExecutionContext arg1)
{
System.out.println("vetoJobException");
return false;
}
}
MyJobDetailListener:import org.quartz.JobExecutionContext;
import org.quartz.Trigger;
import org.quartz.TriggerListener;
/** *//**
*
* @author zdw
*
*/
public class MyTriggerListener implements TriggerListener
{
public String getName()
{
return "myTriggerListener";
}
public void triggerComplete(Trigger trigger, JobExecutionContext jeContext,
int arg2)
{
System.out.println("triggerName:" + trigger.getName());
System.out.println("complete");
}
public void triggerFired(Trigger arg0, JobExecutionContext arg1)
{
System.out.println("fire");
System.out.println("trigger" + arg0.getGroup());
}
public void triggerMisfired(Trigger arg0)
{
System.out.println("triggerMisfired");
}
public boolean vetoJobExecution(Trigger arg0, JobExecutionContext arg1)
{
System.out.println("vetoJobException");
return false;
}
}
package com;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.JobListener;
/** *//**
*
* @author zdw
*
*/
public class MyJobDetailListener implements JobListener
{
/** *//**
* 注意name是必须的
*/
public String getName()
{
return "myJobListener";
}
public void jobExecutionVetoed(JobExecutionContext arg0)
{
System.out.println("jobExceution");
}
public void jobToBeExecuted(JobExecutionContext arg0)
{
System.out.println("jobTobeExecuted");
}
public void jobWasExecuted(JobExecutionContext arg0,
JobExecutionException arg1)
{
System.out.println("job was executed");
}
}
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.JobListener;
/** *//**
*
* @author zdw
*
*/
public class MyJobDetailListener implements JobListener
{
/** *//**
* 注意name是必须的
*/
public String getName()
{
return "myJobListener";
}
public void jobExecutionVetoed(JobExecutionContext arg0)
{
System.out.println("jobExceution");
}
public void jobToBeExecuted(JobExecutionContext arg0)
{
System.out.println("jobTobeExecuted");
}
public void jobWasExecuted(JobExecutionContext arg0,
JobExecutionException arg1)
{
System.out.println("job was executed");
}
}
上面两个类只要注意name是必须的就可以了.
package com;
import java.util.Date;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.Trigger;
import org.quartz.TriggerUtils;
import org.quartz.impl.StdSchedulerFactory;
/** *//**
*
* @author zdw
*
*/
public class QuartzTest
{
public static void main(String args[])
{
// 得到可用客户端处理调度程序的工厂
SchedulerFactory schedFact = new StdSchedulerFactory();
// 高度程序接口,控制JobDeail和Trigger
try
{
Scheduler sched = schedFact.getScheduler();
// 表示给定工作类的详细信息
JobDetail jobDetail = new JobDetail("myJb", null, StringTest.class);
// 也可以分别设置
jobDetail.setName("angel");
jobDetail.setGroup("007");
jobDetail.setJobClass(StringTest.class);
jobDetail.getJobDataMap().put("jobSays", "I will be success!!");
// 触发器
Trigger trigger = TriggerUtils.makeSecondlyTrigger();
// 设置开始时间,这时设置的是每一秒执行一次
trigger.setStartTime(TriggerUtils
.getEvenSecondDateBefore(new Date()));
// 必须设置,不能为空
trigger.setName("firstTrigger");
// 使用自己的监听器
MyTriggerListener triggerListener = new MyTriggerListener();
sched.addTriggerListener(triggerListener);
sched.addJobListener(new MyJobDetailListener());
// 匹配(必须操作)
trigger.addTriggerListener("myTriggerListener");
jobDetail.addJobListener("myJobListener");
// 为调度程序设置具体工作和触发器
sched.scheduleJob(jobDetail, trigger);
// fire
sched.start();
} catch (SchedulerException e)
{
e.printStackTrace();
}
}
}
import java.util.Date;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.Trigger;
import org.quartz.TriggerUtils;
import org.quartz.impl.StdSchedulerFactory;
/** *//**
*
* @author zdw
*
*/
public class QuartzTest
{
public static void main(String args[])
{
// 得到可用客户端处理调度程序的工厂
SchedulerFactory schedFact = new StdSchedulerFactory();
// 高度程序接口,控制JobDeail和Trigger
try
{
Scheduler sched = schedFact.getScheduler();
// 表示给定工作类的详细信息
JobDetail jobDetail = new JobDetail("myJb", null, StringTest.class);
// 也可以分别设置
jobDetail.setName("angel");
jobDetail.setGroup("007");
jobDetail.setJobClass(StringTest.class);
jobDetail.getJobDataMap().put("jobSays", "I will be success!!");
// 触发器
Trigger trigger = TriggerUtils.makeSecondlyTrigger();
// 设置开始时间,这时设置的是每一秒执行一次
trigger.setStartTime(TriggerUtils
.getEvenSecondDateBefore(new Date()));
// 必须设置,不能为空
trigger.setName("firstTrigger");
// 使用自己的监听器
MyTriggerListener triggerListener = new MyTriggerListener();
sched.addTriggerListener(triggerListener);
sched.addJobListener(new MyJobDetailListener());
// 匹配(必须操作)
trigger.addTriggerListener("myTriggerListener");
jobDetail.addJobListener("myJobListener");
// 为调度程序设置具体工作和触发器
sched.scheduleJob(jobDetail, trigger);
// fire
sched.start();
} catch (SchedulerException e)
{
e.printStackTrace();
}
}
}
注意:
// 匹配(必须操作)
trigger.addTriggerListener("myTriggerListener");
jobDetail.addJobListener("myJobListener");
这两步是必须的,官方文档没有提及,而且必须在scheduler添加完相应的监听器之后.trigger.addTriggerListener("myTriggerListener");
jobDetail.addJobListener("myJobListener");
这时我们看到输出:
vetoJobException
jobTobeExecuted
execute at Fri May 09 09:24:11 CST 2008
instName:angel instGroup:007 jobSays:I will be success!!
job was executed
triggerName:firstTrigger
complete
fire
triggerDEFAULT
vetoJobException
jobTobeExecuted
execute at Fri May 09 09:24:12 CST 2008
instName:angel instGroup:007 jobSays:I will be success!!
job was executed
triggerName:firstTrigger
complete
jobTobeExecuted
execute at Fri May 09 09:24:11 CST 2008
instName:angel instGroup:007 jobSays:I will be success!!
job was executed
triggerName:firstTrigger
complete
fire
triggerDEFAULT
vetoJobException
jobTobeExecuted
execute at Fri May 09 09:24:12 CST 2008
instName:angel instGroup:007 jobSays:I will be success!!
job was executed
triggerName:firstTrigger
complete
我们自己的监听器已经被执行了.
发表评论
-
自定义注解之运行时注解(RetentionPolicy.RUNTIME)
2017-10-25 11:42 705对注解概念不了解的可以先看这个:Java注解基础概念总结 ... -
debug模式很慢的解决办法
2017-10-18 09:00 493今天照常使用MyEclipse 6.5 Blue Editi ... -
今天碰到项目中要做一个某一年月报表的页面的学习提高
2011-05-21 06:33 1016今天在项目中要做一个月报表,由于我采用的是ef 4.1的框架, ... -
预警系统
2010-12-16 15:28 1391根据公司需求,所编写的一个预警系统框架,将lib1.zip和l ... -
对quartz使用框架调度总结
2010-11-17 10:56 1784在项目中的使用需求: 1.可以使用一个A程序定期的去扫描配置 ... -
利用反射给JAVABEAN实例赋值
2010-11-15 22:08 1466package com.util; import java. ... -
logback 日志记录到数据库中
2010-11-10 11:04 6213<!--不采用连接池的配 ... -
logback 关于日志发送邮件配置总结
2010-11-10 09:40 4159<configuration debug="f ... -
sql server语句优化实例
2010-11-10 08:42 1501SQL语句优化有一个很重要的方法: 在Where中的条件表达 ... -
在新的项目中使用logback来作为日志记录系统
2010-11-09 16:19 4232Logback手册中文版文档版本:0.1发布日期:2010年4 ... -
编写批处理命令来执行JAVA文件
2010-11-04 11:13 1874JAVA工程路径结构 Project ------l ... -
Quartz定时任务框架学习总结
2010-11-01 10:58 1297首先关于Quartz的一篇详细介绍的文章可以参考我博客中的一篇 ... -
mysql中采用concat来拼接中文字符乱码解决方式
2010-10-13 17:47 2399mysql concat乱码问题解决concat(str1,s ... -
WEB工程加入FLEX技术,遇到跨域的问题
2010-09-16 08:15 1592在我FLEX博客中有提到怎么将FLEX整合到JAVA的WEB工 ... -
关于Struts2中如何去取得ServletContext的方法
2010-09-16 08:07 2751在我的上一篇文章中说到,将DB4O的DAO类放入到Servel ... -
关于DB4O的学习总结
2010-09-16 07:59 1731一下是一个DB4O的操作DAO。 作为DB4O在WEB项目中 ... -
SVN服务器配置总结
2010-09-16 07:40 3411软件下载 服务器和客户端安装 建立版本库(Reposito ...
相关推荐
这个项目“java监听器+quartz实现每天动态时间执行任务的功能”是结合了Java的监听器机制和Quartz定时任务框架来完成这样的需求。下面将详细解释这两个关键知识点。 **Java监听器** Java监听器是Java AWT和Swing库...
6. **QRTZ_JOB_LISTENERS** 和 **QRTZ_TRIGGER_LISTENERS**:这两个表用于跟踪作业和触发器的监听器,监听器可以在作业执行前后执行自定义逻辑。 7. **QRTZ_calendars**:此表用于存储日历对象,这些对象可以用来...
- 使用Quartz的`SchedulerListener`和`JobListener`可以监听调度和任务执行的事件。 6. **源码分析** - 深入研究Quartz的源码,有助于理解其内部工作原理,如JobStore的实现(内存、数据库等)、调度算法等,这有...
6. 创建`QRTZ_TRIGGER_LISTENERS`和`QRTZ_JOB_LISTENERS`表,记录触发器和作业的监听器。 7. 创建`QRTZ_FIRED_TRIGGERS`和`QRTZ_PAUSED_TRIGGER_GRPS`表,用于跟踪已触发的触发器和暂停的触发器组。 在使用Quartz ...
Quartz作业调度器是一款强大的开源任务调度框架,广泛应用于Java应用程序中,用于执行定时和周期性的任务。在与Spring框架整合后,它能够提供更加灵活和便捷的任务调度能力,极大地扩展了Spring的功能。 Quartz的...
Quartz的核心概念包括Job(任务)、Trigger(触发器)和Scheduler(调度器)。Job是执行的具体任务,Trigger定义了任务何时运行,而Scheduler负责管理和执行这些任务。在单机环境下,Quartz已经足够强大,但当需要高...
在本篇讲解中,我们从代码示例出发,详细分析了如何使用Quartz进行任务调度,包括Job的定义、Trigger的配置以及自定义监听器的实现,希望能帮助读者更好地理解和应用Quartz。 以上内容覆盖了给定文件中标题和描述所...
可以使用`ServletContextListener`监听器在Web应用启动时启动Scheduler,在停止时停止。 ```java @WebListener public class QuartzInitializer implements ServletContextListener { @Override public void ...
quartz scheduler 入门教程 Quartz Scheduler 是一种功能丰富、开源的任务调度程序库,可以在任何 Java 程序中使用。它可以用来创建简单或者复杂的执行次数可以达成千上万的任务。...Quartz 与很多组建和监听器通行。
6. **监听器**:Quartz还支持监听器机制,如JobListener和TriggerListener,可以监听Job和Trigger的生命周期事件,例如执行开始、结束、异常等,以便进行日志记录或者异常处理。 7. **并发与集群**:Quartz支持多...
6. **监听器(Listener)**:Quartz还允许添加作业监听器和触发器监听器,它们可以在作业执行前后或触发器触发时执行某些操作,提供了一种扩展点。 在你的示例项目中,可能会包含以下关键部分: - `Job`类:定义了...
在文档“第7章 实现Quartz监听器.doc”中,可能详细阐述了如何创建和注册这些监听器,以及它们在实际应用中的用法。通常,监听器可以通过`Scheduler`对象的`addJobListener()`, `addTriggerListener()`和`...
同时,Quartz还支持插件机制,允许开发人员添加自定义的触发器、监听器和作业存储实现。 在使用"quartz-2.1.7.jar"时,开发者需要将其引入到项目类路径中,并通过`Scheduler`实例来配置和启动调度器。配置通常涉及...
- **监听器**:可以注册监听器来监控Job的状态变化,便于实现监控和报警等功能。 #### 六、Quartz的发展历程 - **创建与发展**:Quartz最初由James House创建于2001年,并于同年加入SourceForge项目。 - **...
内容提要:除前面用编程式使用监听器外,Quartz 还支持在 quartz_jobs.xml 中以声明式使用监听器。 第七章. 实现 Quartz 监听器 (第七部分) 内容提要:调用监听方法的线程,按什么顺序调用监听方法,最后列了一些...
通常,我们会创建一个初始化监听器(ServletContextListener)来启动Scheduler,并在Web应用关闭时停止Scheduler,以避免资源泄露。同时,我们可以使用Spring框架的Integration来简化配置和管理,将Quartz与Spring的...
7. **监听器**:TriggerListener 和 JobListener 用于监听 Job 和 Trigger 的事件,例如 Job 的执行开始、结束,Trigger 的触发等。通过实现这些接口,你可以实现自定义的行为,比如日志记录、错误处理或通知机制。 ...
Quartz调度器可以在应用启动时加载这些配置,实现定时任务的自动化执行。 4. **插件部署** TaskManager.Plugins可能指的是Quartz的插件系统,它允许扩展Quartz的功能。Quartz提供了一些内置插件,如JobStore(用于...
6. `QRTZ_TRIGGER_LISTENERS`、`QRTZ_JOB_LISTENERS`:这两个表用于定义触发器和作业的监听器,监听器可以在触发器或作业的状态发生变化时执行自定义逻辑。 7. `QRTZ_CALENDARS`:日历表用于排除某些特定日期,例如...