IBM WebSphere Application Server Scheduler(定时器)

本文来自:http://hi.baidu.com/fuqilee/blog/item/59888bfb7439a82b4f4aeac8.html

 

IBM WebSphere Application Server Scheduler

ibm WebSphere Application server Scheduler 是一种功能全面的定时器服务,提供了在 WebSphere Application server 中配置、管理和开发基于时间的工作任务的功能,能够使 J2EE 操作具有高性能、持久性以及事务性等特征。Scheduler 具有以下优点:

  • 易于管理

    Scheduler 的创建、更新、调度、验证以及监控等任务是 WebSphere Application server 中的管理控制台进行配置的,可在单个服务器 、集群、节点或单元中创建 Scheduler。每个配置后的 Scheduler 拥有唯一的 JNDI 名称、持久存储 设备和守护程序。



    图 1. WebSphere Application Server 管理控制台中的 Scheduler 配置面板
    图 1. WebSphere Application Server 管理控制台中的 Scheduler 配置面板
  • 具有持久性和事务健壮性

    Scheduler 任务可以通过存入关系数据库的方式被持久化,因此可以保证长期多次的运行。轮询守护程序使用这个数据库来确定哪些任务要运行以及什么时候运行。

  • 具有灵活的时间定制方式

    Scheduler 任务依据用户指定的日历在某一时间开始执行一次或多次任务,用户可根据需要订制自己的日历。

  • 具有扩展性

    当 Scheduler 服务运行于集群环境的时候,可以通过负载均衡管理提高性能和可用性。



    图 2. 集群环境中的 Scheduler
    图 2. 集群环境中的 Scheduler

使用 WebSphere Application server Scheduler 服务可通过以下三个步骤:

  • 在 WebSphere Application server 管理控制台配置 Scheduler 服务;
  • 开发调用 Scheduler 服务代码;
  • 部署;

Scheduler 服务可由以下两种方式调用:调用会话 Bean 的任务,发送 Java 消息的服务。本文中使用调用会话 Bean 的任务说明如何调用 Scheduler 服务。

  1. 创建一个 EJB 项目用以开发由会话 Bean 实现的任务,在 EJB Module 中创建一个无状态 Session Bean(ScheduledTask),在部署描述符中添加 com.ibm.websphere.scheduler.TaskHandlerHome 和 com.ibm.websphere.scheduler.TaskHandler 作为远程 Home 接口和远程接口。
  2. 实现 ScheduledTask 的 process 方法。
    …
    public void process(TaskStatus status) {
        Date timeValue = new Date();
        system.out.println("In process method, time is " + timeValue.toString());
    }
    …
  3. 在需要调用 Scheduler 服务的方法中查找 Scheduler,创建 BeanTaskInfo 实例并启动 scheduler。
    // 在J2EE上下文环境中查找scheduler
    Scheduler scheduler = (Scheduler)
    new InitialContext.lookup("java:comp/env/sched/MyTestScheduler");
    Object o = ctx.lookup("ejb/com/test/ScheduledTask");
    TaskHandlerHome home = 
      (TaskHandlerHome)javax.rmi.PortableRemoteObject.narrow(o, TaskHandlerHome.class);
    
    // 设置任务启动时间
    java.util.Date startDate = new java.util.Date(System.currentTimeMillis()+3000);
    
    // 设置BeanTaskInfo
    BeanTaskInfo taskInfo = (BeanTaskInfo) scheduler.createTaskInfo(BeanTaskInfo.class);
    taskInfo.setName("testTask");
    taskInfo.setTaskHandler(home);
    taskInfo.setStartTime(startDate);
    taskInfo.setRepeatInterval("600seconds");
    taskInfo.setNumberOfRepeats(-1); //重复直至任务被取消
    taskInfo.setQOS(BeanTaskInfo.QOS_ATLEASTONCE);
        
    // 启动scheduler和任务
    TaskStatus status = scheduler.create(taskInfo);

WebSphere Application server Scheduler 易于管理,具有持久性和事务性,可扩展,可应用于集群环境,为 J2EE 应用提供了功能全面的计时器服务,但由于它与 WebSphere Application server 的紧耦合关系,降低了它的灵活性,造成了一定的局限。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值