本文以JBOSS4.2.3GA下使用EJB3定时服务为例。
一、
简介
作为一个简单的定时器,
EJB3
定时服务提供定时任务实现的
API
。
二、
使用说明
1、
注入定时服务
@Resource
private TimerService timerService;
2、
创建定时器
timerService.createTimer
(new Date(new Date().getTime()+ intervalDuration),intervalDuration, timerInfo);
/**
* Create an interval timer whose first expiration occurs at a given point in time and
* whose subsequent expirations occur after a specified interval.
*
* @param initialExpiration The point in time at which the first timer expiration must occur.
* @param intervalDuration The number of milliseconds that must elapse between timer
* expiration notifications. Expiration notifications are
* scheduled relative to the time of the first expiration. If
* expiration is delayed(e.g. due to the interleaving of other
* method calls on the bean) two or more expiration notifications
* may occur in close succession to "catch up".
* @param info Application information to be delivered along with the timer expiration
* notification. This can be null.
*
* @return The newly created Timer.
*
* @throws IllegalArgumentException If initialExpiration is null, or initialExpiration.getTime()
* is negative, or intervalDuration is negative.
* @throws IllegalStateException If this method is invoked while the instance is in
* a state that does not allow access to this method.
* @throws EJBException If this method could not complete due to a system-level failure.
**/
public Timer createTimer( Date initialExpiration, long intervalDuration, Serializable info )
throws
IllegalArgumentException,
IllegalStateException,
EJBException;
3、
使用注解标注定时任务函数
import javax.ejb.Timeout;
@Timeout
public void timerTask(Timer t)
{ ... }
4、
当定时器创建后,则定时触发定时任务
三、
注意事项
1、
只能用在无状态会话bean
中,
且一个bean
中只能对一个方法使用timeout
定时任务注解
2、
TimerService
具有持久化特性,
也就是说如果一个TimerService
已经启动,
如果服务器重新启动了,
这个TimerService
会继续执行
3、
Timer类
所在包: ${JBOSS_HOME}/
client/
jbossall-client.jar
TimerImpl类
所在包:${JBOSS_HOME}/server/default/lib/jboss.jar
TimerServiceImpl类
所在包:
${JBOSS_HOME}/server/default/lib/jboss.jar
4、
查看定时器是否已存在的方法
timerInfo:
定时器创建时的字符串参数,可用来标识定时器
Timer timer = null;
Iterator timers = timerService.getTimers().iterator();
while(timers.hasNext())//查看定时器是否已存在
{
Timer t = (Timer) timers.next();
String info = (String) t.getInfo();
if (info.equals(timerInfo))
{
timer = t;
}
}
四、
定时服务TimerService
是如何具有持久化特性的
从
org.jboss.ejb.txtimer.TimerServiceImpl
源码
createTimer
方法看到语句
persistencePolicy.insertTimer(timerId, timedObjectId, initialExpiration, intervalDuration, info);
作用是把定时器作为记录插入数据库。JBOSS
本地使用的是hsqldb
内存数据库并把数据存储于硬盘,数据文件存储在${JBOSS_HOME}/server/default/data/hypersonic/
。JBOSS
启动的时候会重新加载定时器。
五、
清除定时器的方法
1、
程序
:
使用
Timer
类接口
cancel()
缺点:此方法不会清除定时器的持久化数据,在服务器下次启动时定时器仍会启动。
2、
程序:使用
TimerImpl
接口实现类public
方法
killTimer()
缺点
:此方法为
JBOSS
下的定时器实现,只能在
JBOSS
服务器下使用
3、
手动:直接清除数据库中的定时器持久数据
方法:
1)
编写一个
bat
批处理文件,写入以下语句:
java -cp E:\jboss-4.2.3.GA\server\default\lib\hsqldb.jar
org.hsqldb.util.DatabaseManager -url
jdbc:hsqldb:E:/jboss-4.2.3.GA/server/default/data/hypersonic/localDB
2)
执行
bat
文件,如下图,找到你的
timer
,然后执行删除语句
缺点:需要手动清理
- 大小: 48.8 KB
分享到:
相关推荐
### EJB3 使用说明中文版知识点总结 #### 一、EJB3 概念与应用场景 **企业 Java Beans (EJB)** 是一种基于 Java 的中间件技术,它为开发复杂的企业级应用程序提供了一种标准化的方法。EJB3 相比于早期版本有了很大...
- **定时服务**:介绍EJB3中提供的定时服务功能,以及如何利用它来实现周期性任务。 - **安全服务**: - **自定义安全域**:讨论如何根据需求自定义安全域,以适应不同的应用场景。 #### 五、消息驱动Bean ...
- 描述如何使用EJB3进行单表映射,即将实体Bean映射到数据库中的单一表。 **3.3 成员属性映射** - 讨论实体Bean中成员变量与数据库表字段之间的映射规则。 **3.4 建议重载实体Bean的EQUALS()和HASHCODE()方法** ...
- **定时服务(Timer Service)**:支持定时任务的执行。 - **安全服务(Security Service)** - 自定义安全域:根据需求定制不同的安全策略。 #### 五、消息驱动Bean(Message-Driven Bean) - **消息驱动Bean**:用于...
- **定时服务**: 阐述定时服务的使用,允许会话Bean执行定时任务。 - **安全服务**: 分析安全服务在会话Bean中的作用,包括自定义安全域的配置。 #### 四、JMS与消息传递 **4.1 消息驱动Bean** - **队列消息**: ...
- 讲述了EJB3中安全服务的使用方法。 - 包括身份验证、授权等安全管理机制。 - **自定义安全域**: - 说明了如何在EJB3应用程序中实现自定义的安全域。 - 包括配置安全策略、定义访问控制规则等步骤。 #### 第...
**2.12 定时服务(TIMERSERVICE)** 用于安排定期执行的任务,例如发送电子邮件提醒或数据备份。 **2.13 安全服务(SECURITY SERVICE)** EJB容器提供了一套安全服务,用于认证和授权,确保只有授权用户才能访问特定...
- **定时服务**:解释如何使用EJB 3提供的定时服务功能。 - **安全服务**:探讨如何利用EJB的安全服务来保护应用程序,并包括自定义安全域的配置。 #### 五、消息驱动Bean (Message-Driven Bean) - **概述**:简要...
- **EJB3QL语言**:详细解释EJB3QL语言的各种特性,如大小写敏感性、排序、查询部分属性、使用构造器、聚合查询、关联查询等。 以上是基于给定文件的标题、描述、标签及部分内容所总结的关键知识点。这些知识点覆盖...
- **定时服务(Timer Service)**:介绍如何使用EJB 3.0提供的定时服务功能来执行周期性的后台任务。 - **安全服务(Security Service)**: - **自定义安全域**:讲解如何为特定的应用程序定制安全策略。 #### 五、...
- **定时服务**:介绍了EJB3中的定时服务机制,使开发者能够实现定时任务等功能。 - **安全服务**: - **基本概念**:概述了EJB3的安全模型及其实现机制。 - **自定义安全域**:说明了如何根据应用需求来自定义...
- **定时服务 (Timer Service)**:探讨了如何使用定时服务来执行周期性的任务。 - **安全服务 (Security Service)**:详细说明了如何配置和使用安全服务,包括自定义安全域的实现方法。 #### 六、JMS (Java Message...