`
lzy190100311
  • 浏览: 7621 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

EJB3定时服务使用说明

    博客分类:
  • EJB3
阅读更多

本文以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 使用说明中文版知识点总结 #### 一、EJB3 概念与应用场景 **企业 Java Beans (EJB)** 是一种基于 Java 的中间件技术,它为开发复杂的企业级应用程序提供了一种标准化的方法。EJB3 相比于早期版本有了很大...

    EJB3实例教程破解版

    - 描述如何使用EJB3进行单表映射,即将实体Bean映射到数据库中的单一表。 **3.3 成员属性映射** - 讨论实体Bean中成员变量与数据库表字段之间的映射规则。 **3.4 建议重载实体Bean的EQUALS()和HASHCODE()方法** ...

    EJB3实例教程.pdf

    - **定时服务(Timer Service)**:支持定时任务的执行。 - **安全服务(Security Service)** - 自定义安全域:根据需求定制不同的安全策略。 #### 五、消息驱动Bean(Message-Driven Bean) - **消息驱动Bean**:用于...

    ejb3·0入门经典教程

    - **定时服务**: 阐述定时服务的使用,允许会话Bean执行定时任务。 - **安全服务**: 分析安全服务在会话Bean中的作用,包括自定义安全域的配置。 #### 四、JMS与消息传递 **4.1 消息驱动Bean** - **队列消息**: ...

    EJB3.0实例教程

    - 讲述了EJB3中安全服务的使用方法。 - 包括身份验证、授权等安全管理机制。 - **自定义安全域**: - 说明了如何在EJB3应用程序中实现自定义的安全域。 - 包括配置安全策略、定义访问控制规则等步骤。 #### 第...

    EJB3.0中文文档

    **2.12 定时服务(TIMERSERVICE)** 用于安排定期执行的任务,例如发送电子邮件提醒或数据备份。 **2.13 安全服务(SECURITY SERVICE)** EJB容器提供了一套安全服务,用于认证和授权,确保只有授权用户才能访问特定...

    ejb3.0实例教程

    - **定时服务**:解释如何使用EJB 3提供的定时服务功能。 - **安全服务**:探讨如何利用EJB的安全服务来保护应用程序,并包括自定义安全域的配置。 #### 五、消息驱动Bean (Message-Driven Bean) - **概述**:简要...

    EJB3.0实例教程(中文版)

    - **EJB3QL语言**:详细解释EJB3QL语言的各种特性,如大小写敏感性、排序、查询部分属性、使用构造器、聚合查询、关联查询等。 以上是基于给定文件的标题、描述、标签及部分内容所总结的关键知识点。这些知识点覆盖...

    EJB 3.0实例教程(pdf)

    - **定时服务(Timer Service)**:介绍如何使用EJB 3.0提供的定时服务功能来执行周期性的后台任务。 - **安全服务(Security Service)**: - **自定义安全域**:讲解如何为特定的应用程序定制安全策略。 #### 五、...

    EJB3.0实例教程.pdf

    - **定时服务**:介绍了EJB3中的定时服务机制,使开发者能够实现定时任务等功能。 - **安全服务**: - **基本概念**:概述了EJB3的安全模型及其实现机制。 - **自定义安全域**:说明了如何根据应用需求来自定义...

    Java-J2EE 最新ejb3.0实例教程

    - **定时服务 (Timer Service)**:探讨了如何使用定时服务来执行周期性的任务。 - **安全服务 (Security Service)**:详细说明了如何配置和使用安全服务,包括自定义安全域的实现方法。 #### 六、JMS (Java Message...

Global site tag (gtag.js) - Google Analytics