Time Service(定时服务)
EJB如何调用EJB容器通过的定时服务?
在指定的某个时间点,执行相应的人任务。
常用的定时服务框架:
EJB(Since EJB2.1)
QuantZ(Open Source)
脚本(如UINX中的cron at)
1、EJB定时服务的原理
采用了模板方法
① 容器提供定时服务功能
② EJB要注册到定时服务器上
③ 到达指定时刻,容器会回调EJB中的方法
2、EJB定时服务的编程
TimerService API
javax.ejb.TimerService<intenface>
① TimerService生成并返回一个Timer对象
② 构造在指定的时间点执行的Timer 或
构造演示一段事件后重复执行的Timer
③ 定义回调方法 TimeObject<interface> 或
a、EJB实现该接口
b、容器回调TimeObject也可以采用标注@Timeout来定义回调方法
通过EJBContext来获得定时服务
@Resource private TimerService ts;
ts.createTimer(Date date,long interval,String meetingNote)创建定时服务逻辑并注册
@Timeout 标注该方法为定时服务方法,导师EJB容器会回调这个方法。
EJB定时服务的优缺点:
优点:与平台无关,底层定时服务与EJB无关
缺点:粗粒度,不能在配置文件中配置时间