- 浏览: 695143 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (364)
- quick start (57)
- bboss aop (43)
- bboss mvc (48)
- bboss persistent (96)
- bboss taglib (30)
- bboss event (10)
- bbossgroups (52)
- bboss (32)
- bboss会话共享 (17)
- bboss rpc (7)
- bboss 国际化 (5)
- bboss 序列化 (9)
- bboss cxf webservice (8)
- bboss hessian (3)
- bboss 安全认证SSO (15)
- bboss 工作流 (6)
- 平台 (18)
- bboss quartz (3)
- 杂谈 (5)
- 大数据 (1)
- bboss elastic (24)
- bboss http (1)
- bboss kafka (1)
- Elasticsearch Scroll和Slice Scroll查询API使用案例 (1)
最新评论
-
qianhao123:
...
采用gradle构建和发布bboss方法介绍 -
qianhao123:
[img][/img]
采用gradle构建和发布bboss方法介绍 -
yin_bp:
欢迎大家参与working
高性能elasticsearch ORM开发库使用介绍 -
qq641879434:
万分感谢
bboss 持久层sql xml配置文件编写和加载方法介绍 -
yin_bp:
qq641879434 写道怎么设置配置文件 可以查看执行的S ...
bboss 持久层sql xml配置文件编写和加载方法介绍
bboss quartz组件全攻略
本文全面介绍bboss中quartz组件的配置和使用方法。
定时任务默认配置文件一般在resources下面:
/resources/org/frameworkset/task/quarts-task.xml
摘要
1.resources下的quartz.properties文件为quartz引擎的默认配置,同时也可在bboss quartz引擎xml家配置文件中配置quartz引擎的配置参数覆盖默认配置(这里不做介绍)
2.quartz监听器配置
全局schedule监听器,全局job监听器,job监听器,全局trigger监听器,trigger监听器
3.日历配置
4.触发器配置
cron,simple,DateInterval,NthIncludedDay四种基本触发器类型
还有一种bboss提供特定类型builder类型,通过这种类型用户可以自己实现TriggerBuilder接口来动态创建自己的
Trigger类型,如果任务配置参数有变化还可以重新加载这些参数并重启对应的作业。
5.quartz 任务配置
6.任务的启用和停用
下面详细介绍2,3,4,5,6部分。
一、实例
用户可以看一个配置实例:task-quartz-exception.xml
加载改配置并启动一个quartz引擎:
我们结合实例来说明上述的几个部分。
二、quartz监听器配置
1.全局schedule监听器
schedule监听器监听quartz引擎中任务生命周期管理事件,包括任务加载、创建、销毁、挂起、执行等事件的监听,引擎全局配置,可以配置多个schedule监听器。配置实例如下:
可以在list元素中配置多个scheduler监听器,配置顺序就是他们的执行顺序。DefaultSchedulerListener是bboss缺省提供的scheduler监听器,配置该监听器可以将相关的事件信息用log4j输出到日志文件中,日志级别为info级。
用户可以定义自己的scheduler监听器,必须实现org.quartz.SchedulerListener接口。
2.全局job监听器
全局job监听器可以监听所有quartz job事件,配置实例:
可以在list元素中配置多个GlobalJobListener监听器,配置顺序就是他们的执行顺序。DefaultGlobalJobListener是bboss缺省提供的GlobalJobListener,配置该监听器可以将相关的事件信息用log4j输出到日志文件中,日志级别为info级。
用户可以定义自己的GlobalJobListener监听器,必须实现org.frameworkset.task.BaseJobListener基础抽象类。
3.job监听器
job监听器可以监听指定quartz job任务的执行情况,配置实例:
可以在list元素中配置多个JobListener监听器,然后在特定的任务上面指定相应的监听器的名称即可(可以指定多个,用逗号分隔)。DefaultJobListener是bboss缺省提供的JobListener,配置该监听器可以将相关的事件信息用log4j输出到日志文件中,日志级别为info级。
用户可以定义自己的JobListener监听器,必须实现org.frameworkset.task.BaseJobListener基础抽象类。
在具体的任务上配置job listener的实例:
joblistenername元素属性指定了job监听器的名称
joblistenername="DefaultJobListener"
如果有多个listener,配置方法为:
joblistenername="DefaultJobListener,listener1,listener2"
4.全局trigger监听器
全局trigger监听器可以监听所有quartz job任务被触发的事件,配置实例:
可以在list元素中配置多个GlobleTriggerListener监听器,配置顺序就是他们的执行顺序。org.frameworkset.task.GlobalTriggerListener是bboss缺省提供的GlobleTriggerListener,配置该监听器可以将相关的事件信息用log4j输出到日志文件中,日志级别为info级。
用户可以定义自己的GlobleTriggerListener监听器,必须实现org.frameworkset.task.BaseTriggerListener基础抽象类。
5.trigger监听器
trigger监听器可以监听指定quartz 任务的执行情况,配置实例:
可以在list元素中配置多个TriggerListener监听器,然后在特定的任务上面指定相应的监听器的名称即可(可以指定多个,用逗号分隔)。org.frameworkset.task.DefaultTriggerListener是bboss缺省提供的TriggerListener,配置该监听器可以将相关的事件信息用log4j输出到日志文件中,日志级别为info级。
用户可以定义自己的TriggerListener监听器,必须实现org.frameworkset.task.BaseTriggerListener基础抽象类。
在具体的任务上配置trigger listener的实例:
triggerlistenername元素属性指定了trigger监听器的名称
triggerlistenername="DefaultTriggerListener"
如果有多个listener,配置方法为:
triggerlistenername="DefaultTriggerListener,listener1,listener2"
三、日历配置
quartz引擎可以定义各种日历,比如节假日等等,然后可以在任务上指定一个日历,这样就可以结合日历和时间周期规则来执行quartz任务了。
1.日历的定义
我们可以定义以下类型的日历:
AnnualCalendar
CronCalendar
DailyCalendar
HolidayCalendar
MonthlyCalendar
WeeklyCalendar
我们可以通过配置日历构建类和配置日历脚本(依赖bsh脚本引擎),下面包含两个情况的实例:
org.frameworkset.task.TestCalendarBuilder实现了抽象类org.frameworkset.task.BaseCalendarBuilder,代码如下:
可以配置多个,每个日历都必须有一个唯一的名称,quartz任务通过名称来引用日历。
2.任务上指定日历
实例如下:
通过calendar属性指定日历:
calendar="2012year"
四、触发器配置
quartz提供了四种基本触发器类型trigger,对应于bboss中cron,simple,DateInterval,NthIncludedDay四种触发器类型, 缺省类型为cron,还有一种bboss提供特定类型builder类型,通过这种类型用户可以自己实现TriggerBuilder接口来动态创建自己的Trigger类型,如果任务配置参数有变化还可以重新加载这些参数并重启对应的作业。
所有时间格式采用yyyy-MM-dd HH:mm:ss格式配置,每个trigger可以定义的属性集说明如下。
1.cron 属性集:
timeZone 时区标识
volatility boolean 是否持久化任务
shouldRecover
description
durability boolean 任务失效后是否保留
cronb_time
2.simple 属性集:
startTime 例如:startTime="2013-01-23 16:29:00"
endTime
repeatCount
repeatInterval The number of milliseconds to pause between the repeat firing.
volatility boolean 是否持久化任务
shouldRecover
description
durability boolean 任务失效后是否保留
3.DateInterval 属性集
startTime
endTime
intervalUnit { SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, YEAR }
repeatInterval
volatility boolean 是否持久化任务
shouldRecover
description
durability boolean 任务失效后是否保留
4.NthIncludedDay 属性集
startTime
endTime
fireAtTime HH:MM[:SS]
intervalType WEEKLY MONTHLY YEARLY
N 第几
timeZone 时区标识
volatility boolean 是否持久化任务
shouldRecover
description
durability boolean 任务失效后是否保留
5.builder
builder类型是bboss提供的特殊类型,通过这种类型用户可以自己实现TriggerBuilder接口来动态创建自己的
Trigger类型,如果任务配置参数有变化还可以重新加载这些参数并重启对应的作业。trigger由实现接口org.frameworkset.task.TriggerBuilder的组件方法创建:
public Trigger builder(SchedulejobInfo jobInfo) throws Exception;
通过方法参数SchedulejobInfo可以读取到任务的各种静态配置属性,这些属性可以是cron ,simple,DateInterval,NthIncludedDay四种类型中的属性集,取决于方法返回的Trigger类型(cron ,simple,DateInterval,NthIncludedDay),同时还可以从其他诸如数据库表中读取和加载任务作业属性,如果这些属性发生变化,还可以重启作业实时加载变化后的配置
属性集
自动继承cron ,simple,DateInterval,NthIncludedDay四种类型中的属性集,特有的属性如下:
triggerbuilder-bean 指定trigger生成器为一个bboss ioc 组件
triggerbuilder-class 指定trigger生成器的实现类class路径
用法
当任务时间周期发生变化时,可以调用TaskService接口重启相应的任务:
更新默认组的作业
public void updateExecuteJob(String jobname);
更新指定作业组的任务
public void updateExecuteJob(String groupid, String jobname)
我们在任务上用trigger属性来制定任务的trigger类型,实例如下:
实例中通过trigger属性指定了任务的trigger类型为simple,然后指定了相应的其他时间属性:startTime,repeatCount,repeatInterval
并且还会结合calendar来设置节假日不执行任务。其他三种类型类似,篇幅关系就不说明了。
重点说明一下Builder类型两种使用方式:
triggerbuilder-class方式
triggerbuilder-bean方式必须在quartz引擎的ioc容器中配置一个TiggerBuilder组件:
<property name="testTiggerBuilder" class="org.frameworkset.task.TestTiggerBuilder"/>
TestTiggerBuilder组件的实现代码如下:
builder方法中的各种参数都可以从数据库中获取,如果参数有调整则可以调用以下方法重启作业:
或者
五、任务配置
这里简单地介绍一下bboss quartz组件任务配置方式,主要有三种:
1.实现org.frameworkset.task.Execute接口的配置方式
例如:
Execute接口实现类
任务配置:
如果任务在执行的时候需要一些配置参数,可以通过map来指定,然后可以再任务执行的时候在execute方法的Map参数parameters中获取;如果没有参数则无需配置map子元素。
2.直接配置任务处理类名并指定执行方法的方式
class方式指定 任务程序,method方法对应要执行的方法,通过construction指定方法的参数值,多个参数按照参数的顺序指定多个property属性即可。
如果方法没有参数就无需配置construction元素,ClassMethodJob实现类代码如下:
3.组件方式指定任务执行程序
通过bean-name指定任务程序组件,method指定要执行的方法,通过construction指定方法的参数值,多个参数按照参数的顺序指定多个property属性即可。
bean-name="methodjob"指定组件的名称,如果方法没有参数就无需配置construction元素,对应的组件必须在quartz-task.xml文件中配置:
组件的定义遵行bboss ioc的语法规范,可以在quartz-task.xml文件中配置,也可以引用其他ioc容器中的组件,我们看一个引用mvc 容器中配置的组件的实例:
六、任务的启用和停用
bboss中管理的quartz任务可以通过配置非常方便地开启和关闭:
1.全局关闭和开启quartz引擎
首先找到quartz-task.xml或者你自己的配置文件中的以下配置:
然后修改enable属性值为true,表示开启quartz引擎,false表示关闭quartz引擎。enable设置为false,则执行下述方法时将不会启动quartz引擎:
2.特定任务的开启和关闭
如果不想运行某个quartz任务,那么可以通过任务的used属性进行控制:
used 为true时启用任务,为false时关闭任务
以下是一个配置示例:
<property name="browserCounterStatisticDailyJob" jobid="browserCounterStatisticDailyJob"
bean-name="browserCounterStatisticDailyJob"
method="statisticBrowserCounterDailyJob"
cronb_time="0 0 0am * * ?" used="false"
shouldRecover="false"
>
</property>
至此bboss quartz组件的功能就全部介绍完毕。
参考文档:
基于quartz任务调度组件的使用
本文全面介绍bboss中quartz组件的配置和使用方法。
定时任务默认配置文件一般在resources下面:
/resources/org/frameworkset/task/quarts-task.xml
摘要
1.resources下的quartz.properties文件为quartz引擎的默认配置,同时也可在bboss quartz引擎xml家配置文件中配置quartz引擎的配置参数覆盖默认配置(这里不做介绍)
2.quartz监听器配置
全局schedule监听器,全局job监听器,job监听器,全局trigger监听器,trigger监听器
3.日历配置
4.触发器配置
cron,simple,DateInterval,NthIncludedDay四种基本触发器类型
还有一种bboss提供特定类型builder类型,通过这种类型用户可以自己实现TriggerBuilder接口来动态创建自己的
Trigger类型,如果任务配置参数有变化还可以重新加载这些参数并重启对应的作业。
5.quartz 任务配置
6.任务的启用和停用
下面详细介绍2,3,4,5,6部分。
一、实例
用户可以看一个配置实例:task-quartz-exception.xml
加载改配置并启动一个quartz引擎:
TaskService taskService = TaskService.getTaskService("org/frameworkset/task/task-quartz-exception.xml"); taskService.startService();
我们结合实例来说明上述的几个部分。
二、quartz监听器配置
1.全局schedule监听器
schedule监听器监听quartz引擎中任务生命周期管理事件,包括任务加载、创建、销毁、挂起、执行等事件的监听,引擎全局配置,可以配置多个schedule监听器。配置实例如下:
<property name="quartz.config.schedulerlistener"> <list componentType="bean"> <property name="DefaultSchedulerlistener" class="org.frameworkset.task.DefaultSchedulerListener"/> </list> </property>
可以在list元素中配置多个scheduler监听器,配置顺序就是他们的执行顺序。DefaultSchedulerListener是bboss缺省提供的scheduler监听器,配置该监听器可以将相关的事件信息用log4j输出到日志文件中,日志级别为info级。
用户可以定义自己的scheduler监听器,必须实现org.quartz.SchedulerListener接口。
2.全局job监听器
全局job监听器可以监听所有quartz job事件,配置实例:
<property name="quartz.config.globaljoblistener"> <list componentType="bean"> <property name="DefaultGlobalJobListener" class="org.frameworkset.task.DefaultGlobalJobListener"/> </list> </property>
可以在list元素中配置多个GlobalJobListener监听器,配置顺序就是他们的执行顺序。DefaultGlobalJobListener是bboss缺省提供的GlobalJobListener,配置该监听器可以将相关的事件信息用log4j输出到日志文件中,日志级别为info级。
用户可以定义自己的GlobalJobListener监听器,必须实现org.frameworkset.task.BaseJobListener基础抽象类。
3.job监听器
job监听器可以监听指定quartz job任务的执行情况,配置实例:
<property name="quartz.config.joblistener"> <list componentType="bean"> <property name="DefaultJobListener" class="org.frameworkset.task.DefaultJobListener"/> </list> </property>
可以在list元素中配置多个JobListener监听器,然后在特定的任务上面指定相应的监听器的名称即可(可以指定多个,用逗号分隔)。DefaultJobListener是bboss缺省提供的JobListener,配置该监听器可以将相关的事件信息用log4j输出到日志文件中,日志级别为info级。
用户可以定义自己的JobListener监听器,必须实现org.frameworkset.task.BaseJobListener基础抽象类。
在具体的任务上配置job listener的实例:
<property name="beanmethodjobnoargs" jobid="beanmethodjobnoargs" bean-name="methodjob" method="actionexception" calendar="2012year" joblistenername="DefaultJobListener" triggerlistenername="DefaultTriggerListener" trigger="cron" cronb_time="2 * * * * ?" used="false" shouldRecover="false"/>
joblistenername元素属性指定了job监听器的名称
joblistenername="DefaultJobListener"
如果有多个listener,配置方法为:
joblistenername="DefaultJobListener,listener1,listener2"
4.全局trigger监听器
全局trigger监听器可以监听所有quartz job任务被触发的事件,配置实例:
<property name="quartz.config.globaltriggerlistener"> <list componentType="bean"> <property name="GlobleTriggerListener" class="org.frameworkset.task.GlobalTriggerListener"/> </list> </property>
可以在list元素中配置多个GlobleTriggerListener监听器,配置顺序就是他们的执行顺序。org.frameworkset.task.GlobalTriggerListener是bboss缺省提供的GlobleTriggerListener,配置该监听器可以将相关的事件信息用log4j输出到日志文件中,日志级别为info级。
用户可以定义自己的GlobleTriggerListener监听器,必须实现org.frameworkset.task.BaseTriggerListener基础抽象类。
5.trigger监听器
trigger监听器可以监听指定quartz 任务的执行情况,配置实例:
<property name="quartz.config.triggerlistener"> <list componentType="bean"> <property name="DefaultTriggerListener" class="org.frameworkset.task.DefaultTriggerListener"/> </list> </property>
可以在list元素中配置多个TriggerListener监听器,然后在特定的任务上面指定相应的监听器的名称即可(可以指定多个,用逗号分隔)。org.frameworkset.task.DefaultTriggerListener是bboss缺省提供的TriggerListener,配置该监听器可以将相关的事件信息用log4j输出到日志文件中,日志级别为info级。
用户可以定义自己的TriggerListener监听器,必须实现org.frameworkset.task.BaseTriggerListener基础抽象类。
在具体的任务上配置trigger listener的实例:
<property name="beanmethodjobnoargs" jobid="beanmethodjobnoargs" bean-name="methodjob" method="actionexception" calendar="2012year" joblistenername="DefaultJobListener" triggerlistenername="DefaultTriggerListener" trigger="cron" cronb_time="2 * * * * ?" used="false" shouldRecover="false"/>
triggerlistenername元素属性指定了trigger监听器的名称
triggerlistenername="DefaultTriggerListener"
如果有多个listener,配置方法为:
triggerlistenername="DefaultTriggerListener,listener1,listener2"
三、日历配置
quartz引擎可以定义各种日历,比如节假日等等,然后可以在任务上指定一个日历,这样就可以结合日历和时间周期规则来执行quartz任务了。
1.日历的定义
我们可以定义以下类型的日历:
AnnualCalendar
CronCalendar
DailyCalendar
HolidayCalendar
MonthlyCalendar
WeeklyCalendar
我们可以通过配置日历构建类和配置日历脚本(依赖bsh脚本引擎),下面包含两个情况的实例:
<property name="quartz.config.calendar"> <map> <property name="2012year"> <![CDATA[ //法定节日是以每年为周期的,所以使用AnnualCalendar AnnualCalendar holidays = new AnnualCalendar(); //五一劳动节 java.util.Calendar laborDay = new GregorianCalendar(); laborDay.add(java.util.Calendar.MONTH,5); laborDay.add(java.util.Calendar.DATE,1); holidays.setDayExcluded(laborDay, true); //排除的日期,如果设置为false则为包含 //国庆节 java.util.Calendar nationalDay = new GregorianCalendar(); nationalDay.add(java.util.Calendar.MONTH,10); nationalDay.add(java.util.Calendar.DATE,1); holidays.setDayExcluded(nationalDay, true);//排除该日期 return holidays; ]]> </property> <property name="2013year" class="org.frameworkset.task.TestCalendarBuilder"/> </map> </property>
org.frameworkset.task.TestCalendarBuilder实现了抽象类org.frameworkset.task.BaseCalendarBuilder,代码如下:
package org.frameworkset.task; import java.util.GregorianCalendar; import org.quartz.Calendar; import org.quartz.impl.calendar.AnnualCalendar; public class TestCalendarBuilder extends BaseCalendarBuilder { public TestCalendarBuilder() { // TODO Auto-generated constructor stub } public Calendar buildCalendar() { //法定节日是以每年为周期的,所以使用AnnualCalendar AnnualCalendar holidays = new AnnualCalendar(); //五一劳动节 java.util.Calendar laborDay = new GregorianCalendar(); laborDay.add(java.util.Calendar.MONTH,5); laborDay.add(java.util.Calendar.DATE,1); holidays.setDayExcluded(laborDay, true); //排除的日期,如果设置为false则为包含 //国庆节 java.util.Calendar nationalDay = new GregorianCalendar(); nationalDay.add(java.util.Calendar.MONTH,10); nationalDay.add(java.util.Calendar.DATE,1); holidays.setDayExcluded(nationalDay, true);//排除该日期 return holidays; } }
可以配置多个,每个日历都必须有一个唯一的名称,quartz任务通过名称来引用日历。
2.任务上指定日历
实例如下:
<property name="beanmethodjobnoargs" jobid="beanmethodjobnoargs" bean-name="methodjob" method="actionexception" calendar="2012year" joblistenername="DefaultJobListener" triggerlistenername="DefaultTriggerListener" trigger="cron" cronb_time="2 * * * * ?" used="false" shouldRecover="false"/>
通过calendar属性指定日历:
calendar="2012year"
四、触发器配置
quartz提供了四种基本触发器类型trigger,对应于bboss中cron,simple,DateInterval,NthIncludedDay四种触发器类型, 缺省类型为cron,还有一种bboss提供特定类型builder类型,通过这种类型用户可以自己实现TriggerBuilder接口来动态创建自己的Trigger类型,如果任务配置参数有变化还可以重新加载这些参数并重启对应的作业。
所有时间格式采用yyyy-MM-dd HH:mm:ss格式配置,每个trigger可以定义的属性集说明如下。
1.cron 属性集:
timeZone 时区标识
volatility boolean 是否持久化任务
shouldRecover
description
durability boolean 任务失效后是否保留
cronb_time
2.simple 属性集:
startTime 例如:startTime="2013-01-23 16:29:00"
endTime
repeatCount
repeatInterval The number of milliseconds to pause between the repeat firing.
volatility boolean 是否持久化任务
shouldRecover
description
durability boolean 任务失效后是否保留
3.DateInterval 属性集
startTime
endTime
intervalUnit { SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, YEAR }
repeatInterval
volatility boolean 是否持久化任务
shouldRecover
description
durability boolean 任务失效后是否保留
4.NthIncludedDay 属性集
startTime
endTime
fireAtTime HH:MM[:SS]
intervalType WEEKLY MONTHLY YEARLY
N 第几
timeZone 时区标识
volatility boolean 是否持久化任务
shouldRecover
description
durability boolean 任务失效后是否保留
5.builder
builder类型是bboss提供的特殊类型,通过这种类型用户可以自己实现TriggerBuilder接口来动态创建自己的
Trigger类型,如果任务配置参数有变化还可以重新加载这些参数并重启对应的作业。trigger由实现接口org.frameworkset.task.TriggerBuilder的组件方法创建:
public Trigger builder(SchedulejobInfo jobInfo) throws Exception;
通过方法参数SchedulejobInfo可以读取到任务的各种静态配置属性,这些属性可以是cron ,simple,DateInterval,NthIncludedDay四种类型中的属性集,取决于方法返回的Trigger类型(cron ,simple,DateInterval,NthIncludedDay),同时还可以从其他诸如数据库表中读取和加载任务作业属性,如果这些属性发生变化,还可以重启作业实时加载变化后的配置
属性集
自动继承cron ,simple,DateInterval,NthIncludedDay四种类型中的属性集,特有的属性如下:
triggerbuilder-bean 指定trigger生成器为一个bboss ioc 组件
triggerbuilder-class 指定trigger生成器的实现类class路径
用法
当任务时间周期发生变化时,可以调用TaskService接口重启相应的任务:
更新默认组的作业
public void updateExecuteJob(String jobname);
更新指定作业组的任务
public void updateExecuteJob(String groupid, String jobname)
我们在任务上用trigger属性来制定任务的trigger类型,实例如下:
<property name="simplebeanmethodjobnoargs" jobid="simplebeanmethodjobnoargs" bean-name="methodjob" method="actionexception" calendar="2013year" triggerlistenername="DefaultTriggerListener" trigger="simple" startTime="2013-01-23 16:29:00" repeatCount="2" repeatInterval="2000" used="true" shouldRecover="false"/>
实例中通过trigger属性指定了任务的trigger类型为simple,然后指定了相应的其他时间属性:startTime,repeatCount,repeatInterval
并且还会结合calendar来设置节假日不执行任务。其他三种类型类似,篇幅关系就不说明了。
重点说明一下Builder类型两种使用方式:
triggerbuilder-class方式
<property name="simplebeanmethodjobnoargs-triggerbuilderclass" jobid="simplebeanmethodjobnoargs-triggerbuilderclass" bean-name="methodjob" method="actionexception" calendar="2013year" triggerlistenername="DefaultTriggerListener" trigger="builder" triggerbuilder-class="org.frameworkset.task.TestTiggerBuilder" used="true" shouldRecover="false"/>triggerbuilder-bean方式
<property name="simplebeanmethodjobnoargs-triggerbuilderbean" jobid="simplebeanmethodjobnoargs-triggerbuilderbean" bean-name="methodjob" method="actionexception" calendar="2013year" triggerlistenername="DefaultTriggerListener" trigger="builder" triggerbuilder-bean="testTiggerBuilder" used="true" shouldRecover="false"/>
triggerbuilder-bean方式必须在quartz引擎的ioc容器中配置一个TiggerBuilder组件:
<property name="testTiggerBuilder" class="org.frameworkset.task.TestTiggerBuilder"/>
TestTiggerBuilder组件的实现代码如下:
package org.frameworkset.task; import java.text.SimpleDateFormat; import java.util.Date; import org.quartz.SimpleTrigger; import org.quartz.Trigger; import com.frameworkset.util.StringUtil; import com.frameworkset.util.ValueObjectUtil; public class TestTiggerBuilder implements TriggerBuilder { public Trigger builder(SchedulejobInfo jobInfo) throws Exception { //builder方法中的各种参数都可以从数据库中获取 String s_startTime = jobInfo.getJobPro().getStringExtendAttribute("startTime"); Date startTime = null; if(!StringUtil.isEmpty(s_startTime) ) { SimpleDateFormat format = ValueObjectUtil.getDefaultDateFormat(); startTime = format.parse(s_startTime); } else startTime = new Date(); String s_endTime = jobInfo.getJobPro().getStringExtendAttribute("endTime"); Date endTime = null; if(!StringUtil.isEmpty(s_endTime) ) { SimpleDateFormat format = ValueObjectUtil.getDefaultDateFormat(); endTime = format.parse(s_endTime); } String s_repeatCount = jobInfo.getJobPro().getStringExtendAttribute("repeatCount"); int repeatCount = 0; if(!StringUtil.isEmpty(s_repeatCount) ) { repeatCount = Integer.parseInt(s_repeatCount); } else { repeatCount = 3; } String s_repeatInterval = jobInfo.getJobPro().getStringExtendAttribute("repeatInterval"); long repeatInterval = 0; if(!StringUtil.isEmpty(s_repeatInterval) ) { repeatInterval = Long.parseLong(s_repeatInterval); } else repeatInterval = 2000; SimpleTrigger simpletrigger = new SimpleTrigger(jobInfo.getId(), jobInfo.getScheduleServiceInfo().getId(), startTime, endTime, repeatCount, repeatInterval); return simpletrigger; } }
builder方法中的各种参数都可以从数据库中获取,如果参数有调整则可以调用以下方法重启作业:
TaskService taskService = TaskService.getTaskService("org/frameworkset/task/test-quarts-task.xml")//通过加载自定义配置文件生成的quartz引擎; taskService.updateExecuteJob("simplebeanmethodjobnoargs-triggerbuilderbean");
或者
TaskService taskService = TaskService.getTaskService()//默认quartz引擎; taskService.updateExecuteJob("simplebeanmethodjobnoargs-triggerbuilderbean");
五、任务配置
这里简单地介绍一下bboss quartz组件任务配置方式,主要有三种:
1.实现org.frameworkset.task.Execute接口的配置方式
例如:
Execute接口实现类
package org.frameworkset.task; import java.io.Serializable; import java.util.Map; public class TestJob implements Execute, Serializable { public void execute(Map parameters) { System.out.println("send_count = "+parameters.get("send_count")); } }
任务配置:
<property name="workbroker" jobid="workbroker" action="org.frameworkset.task.TestJob" cronb_time="0 56 14 * * ?" used="true" shouldRecover="false" > <map> <property name="send_count" value="2" /> </map> </property>
如果任务在执行的时候需要一些配置参数,可以通过map来指定,然后可以再任务执行的时候在execute方法的Map参数parameters中获取;如果没有参数则无需配置map子元素。
2.直接配置任务处理类名并指定执行方法的方式
class方式指定 任务程序,method方法对应要执行的方法,通过construction指定方法的参数值,多个参数按照参数的顺序指定多个property属性即可。
<property name="beanclassmethodjob" jobid="beanclassmethodjob" bean-class="org.frameworkset.task.ClassMethodJob" method="action" cronb_time="2 * * * * ?" used="true" shouldRecover="false"> <construction> <property name="hello" value="hello" /> </construction> </property>
如果方法没有参数就无需配置construction元素,ClassMethodJob实现类代码如下:
package org.frameworkset.task; public class ClassMethodJob { public void action(String hello) { System.out.println("ClassMethodJob:doing " + hello); } public void action() { System.out.println("ClassMethodJob:doing no params"); } }
3.组件方式指定任务执行程序
通过bean-name指定任务程序组件,method指定要执行的方法,通过construction指定方法的参数值,多个参数按照参数的顺序指定多个property属性即可。
<property name="beanmethodjob" jobid="beanmethodjob" bean-name="methodjob" method="action" cronb_time="2 * * * * ?" used="true" shouldRecover="false"> <construction> <property name="hello" value="hello" /> </construction> </property>
bean-name="methodjob"指定组件的名称,如果方法没有参数就无需配置construction元素,对应的组件必须在quartz-task.xml文件中配置:
<property name="methodjob" class="org.frameworkset.task.MethodJob"/>
组件的定义遵行bboss ioc的语法规范,可以在quartz-task.xml文件中配置,也可以引用其他ioc容器中的组件,我们看一个引用mvc 容器中配置的组件的实例:
<!--首先通过工厂模式获取mvc容器对像--> <property name="webapplicationcontext" factory-class="org.frameworkset.web.servlet.support.WebApplicationContextUtils" factory-method="getWebApplicationContext"/> <!--逾期服务类,该组件引用了mvc容器对象中一个组件--> <property name="exceedServiceImpl" factory-bean="webapplicationcontext" factory-method="getBeanObject"> <construction> <property value="exceed.service.ExceedServiceImpl" /> </construction> </property>
六、任务的启用和停用
bboss中管理的quartz任务可以通过配置非常方便地开启和关闭:
1.全局关闭和开启quartz引擎
首先找到quartz-task.xml或者你自己的配置文件中的以下配置:
<property name="taskconfig" enable="false">
然后修改enable属性值为true,表示开启quartz引擎,false表示关闭quartz引擎。enable设置为false,则执行下述方法时将不会启动quartz引擎:
TaskService.getTaskService().startService(); TaskService.getTaskService("quartz-custorm.xml").startService();
2.特定任务的开启和关闭
如果不想运行某个quartz任务,那么可以通过任务的used属性进行控制:
used 为true时启用任务,为false时关闭任务
以下是一个配置示例:
<property name="browserCounterStatisticDailyJob" jobid="browserCounterStatisticDailyJob"
bean-name="browserCounterStatisticDailyJob"
method="statisticBrowserCounterDailyJob"
cronb_time="0 0 0am * * ?" used="false"
shouldRecover="false"
>
</property>
至此bboss quartz组件的功能就全部介绍完毕。
参考文档:
基于quartz任务调度组件的使用
发表评论
-
bboss ioc快速入门教程
2017-08-13 11:28 1276bboss是一个非常不错的ioc框架,功能类似于spr ... -
bboss quartz定时任务使用案例介绍
2017-07-29 11:55 1035bboss quartz定时任务使用案例介绍 本文demo g ... -
bboss ioc配置文件中使用外部属性文件介绍
2016-09-20 11:35 1143bboss ioc配置文件中使用外部属性文件介绍 与spri ... -
bboss与spring中配置和引用bboss数据源和bboss dao组件方法说明
2016-08-10 16:04 916首先在项目中导入bboss 持久层包: maven坐标 & ... -
bboss ioc提供的组件初始化工具类介绍
2016-03-18 16:17 738bboss ioc提供的组件初始化工具类介绍 bboss i ... -
扩展bboss ioc语法实现自定义的ioc依赖注入功能
2015-01-20 23:08 1328bboss ioc配置语法简洁而严谨,提供了强大的依赖注入功能 ... -
bboss序列化cglib代理对象方法介绍
2014-06-22 15:14 1159本文介绍bboss序列化cglib代理对象方法。经过cglib ... -
bboss自定义类对象序列化机制介绍
2014-05-26 23:32 1471bboss自定义类对象序列 ... -
bboss将一个组件同时发布为webservice,hessian,http三种服务方法介绍
2014-04-12 14:31 1654bboss将一个组件同时发布为webservice,hessi ... -
bboss发布apache cxf 2.7.6服务和定义客户端服务实例可能产生冲突解决办法
2014-03-22 23:16 1088bboss发布apache cxf 2.7.6服务和定义客户端 ... -
bboss 发布和使用hessian服务方法介绍
2013-02-25 23:21 2112hessian是一款性能非常不错的RPC通讯组件,最近抽空将b ... -
bboss aop拦截器使用简介
2012-11-29 23:20 1207bboss aop拦截器使用简介, ... -
bboss ioc容器之间组件引用方法简介
2012-08-04 15:09 1337bboss ioc容器之间组件引用方法简介。我们可以在ioc容 ... -
Rest协议框架-bboss rpc
2012-08-03 12:51 1355restful风格rpc服务协议rest,定义的语法如下: ... -
解决cxf+bboss发布的webservice缺少<wsdl:types>和<wsdl:message>标签的问题
2012-06-19 10:11 1791cxf+bboss发布webservice服务 ... -
开源工作流引擎activiti与bboss整合使用方法浅析
2012-05-01 11:35 5224本文介绍开源工作流引擎activiti与bboss ioc框架 ... -
bboss aop/ioc组件配置语法诠释
2012-03-01 18:38 2206这篇文章全面介绍bboss ioc 配置语法,希望对 ... -
bboss aop/ioc依赖注入功能介绍
2012-02-12 14:40 1768bboss aop 3.5及后续版本中改进的ioc依赖注入功能 ... -
Bboss和xstream序列化/反序列化性能对比
2011-10-13 00:18 1983Bboss和xstream序列化/反序列化性能对比 本报告分别 ... -
bboss 组件容器的使用方法浅析
2011-08-20 00:21 1665本文重点介绍bboss 中的4大组件容器的特点及使用方法 4 ...
相关推荐
1. **组件化开发**:BBoss支持模块化和组件化的开发模式,允许开发者根据项目需求选择必要的功能组件,避免了传统框架中“大而全”的问题,降低了系统的复杂度。 2. **数据库操作**:BBoss提供了便捷的数据访问层...
BBoss MVCDemo 是一个基于Java的企业级应用框架,它主要为开发者提供了一种高效、灵活的MVC(Model-View-Controller)开发模式。这个框架的目的是简化企业级Web应用的开发流程,提高开发效率,并且具备良好的可扩展...
bboss会话共享是一种分布式会话管理技术,它针对在集群环境下应用部署时如何解决会话数据丢失和单点登录问题提供了专门的解决方案。根据提供的文档内容,我们可以详细探讨bboss会话共享涉及的关键知识点。 首先,...
本实例是一个基于bboss es spring boot starter的demo maven工程,可供spring boot项目集成bboss elasticsearch rest client参考 展示了通过spring boot管理单集群功能和管理多集群功能 单集群测试用例:...
负载均衡组件特点: 1.服务负载均衡(目前提供RoundRobin负载算法) 2.服务健康检查 3.服务容灾故障恢复 4.服务自动发现(zk,etcd,consul,eureka,db,其他第三方注册中心) 5.路由规则动态切换 5.分组服务管理 ...
3. `bboss-util-5.5.0.jar`和`bboss-persistent-5.5.0.jar`:这是BBoss框架的核心组件,提供了许多实用工具类和持久化操作支持,如数据库连接、事务管理等,为Elasticsearch的数据导入提供底层支持。 4. `...
1. **搭建bboss elasticsearch开发环境.wmv**: 这个视频将指导你完成从安装Elasticsearch到配置BBoss的全过程,确保你的开发环境正确无误。 2. **bboss elasticsearch开发入门教程.wmv**: 通过实例演示,讲解如何...
springboot集成ElasticsearchBboss调用Elasticsearch的案例分享
BBoss,全称为“Business Basic Operation Support”,是一个基于Java的企业级开发框架,它提供了丰富的组件和工具,使得开发者能够快速地进行业务逻辑的构建。而EasyUI则是一个基于jQuery的前端UI库,它为开发者...
**bboss+es基本操作示例** 在Java开发中,Elasticsearch(ES)作为一种流行的分布式搜索引擎和数据分析工具,常用于大数据处理和实时分析。bboss(Business Basic Operation Support)框架则是针对Elasticsearch...
**bboss-datatran** 是一个由 **bboss** 社区开源的高效数据处理工具,专注于数据采集、数据清洗转换以及数据入库等任务。它实现了流批一体化的数据处理能力,使得用户能够灵活地应对实时和批量的数据处理场景。在...
BBoss安全认证过滤器是Java Web开发中一种用于实现用户身份验证和权限控制的重要组件。在Web应用程序中,过滤器(Filter)是Servlet规范的一部分,它允许开发者在请求到达目标Servlet或JSP之前进行预处理,以及在...
5. **查询优化**:可能包含SQL查询优化,如自动添加索引、避免全表扫描等。 6. **数据迁移工具**:方便在不同数据库间进行数据迁移或同步。 压缩包中的`db-elasticsearch-tool`可能包含了框架的核心库、示例代码、...
官方版本,亲测可用
BBoss是一个轻量级的企业级应用开发框架,提供了IOC(Inversion of Control)功能,使得对象之间的依赖关系可以通过配置文件进行管理。本文将详细介绍如何在BBoss的IOC配置文件中引用外部属性文件,以便更好地管理和...
bbosssession架构包括了Application、SessionMonitor和Session存储服务(Mongodb/redis)等主要组件。它遵循Servlet 2/3规范API,并提供了创建、修改、销毁、查询和监控session的功能。bbosssession支持灵活可扩展的...
Elasticsearch rest client bboss介绍-Elastic2018中国开发者大会演讲稿
BBoss Persistent是一个轻量级的持久层框架,它提供了方便的方式来处理这些大字段。本文将深入探讨在BBoss Persistent 1.0.2中如何高效地管理CLOB和BLOB数据。 首先,CLOB用于存储大量的文本数据,如长篇文章或XML...