欢迎使用icdoor.com,谢谢您的参与
« 跨越边界:延续、Web开发和Java编程 硅谷枪杀案华裔嫌疑人周三接受提讯(图) »

在RAD中开发、配置并测试基于SessionBean的Scheduler任务

关键字:SessionBean的Scheduler任务

本文介绍了WebSphereApplicationServer提供的应用编程扩展之一:Schedule的相关概念,以向控制台输出"HelloWorld"信息作为一个任务并以此为例说明了在RationalApplicationDeveloper中如何开发、创建、配置并最终测试这一Schedule任务。
1.前言

本文介绍了WebSphereApplicationServer提供的应用编程扩展之一:Schedule的相关概念,以向控制台输出"HelloWorld"信息作为一个任务并以此为例说明了在RationalApplicationDeveloper中如何开发、创建、配置并最终测试这一Schedule任务。

2.Scheduler简介

Scheduler是WebSphereApplicationServer提供的应用编程扩展之一。Scheudler服务提供了WebSphereApplicationServer中配置、管理与开发基于时间的工作任务的功能。在Scheduler服务管理之下,特定的操作或任务可在将来的某一时间运行一次,也可以按指定的时间间隔反复运行。WebSphereApplicationServer中的Scheduler服务为管理和调度任务提供了高的可靠性和运行性能,同时提供了对任务的持久存储管理与事务管理。

使用Scheduler服务管理任务具有以下优点:

简化系统管理步骤,降低系统管理成本
将特定的任务交由Scheduler服务调度、管理并执行,可极大的简化管理步骤,降低管理成本。同时,Scheduler服务在WebSphereApplicationServer中的管理也与其它资源的管理具有很好的一致性,对Scheduler服务的创建、更新、调度、验证以及监控等任务均可在WebSphereApplicationServer管理控制台中完成。
可扩展
Scheduler服务可在集群环境下工作,使用负载均衡可达到更佳性能并提供更高的可靠性。
多样的日期算法
Scheduler服务根据为每一任务指定的日历来决定该任务何时开始执行、每隔多长时间运行一次以及重复执行多少次。UserCanlendar接口实现类即包括定义的日期算法已确定任务被执行的时间。如果WebSphereApplicationServer提供的缺省UserCanlendar实现无法满足需要,开发人员可开发特定的日历并将其指定给任务。
一般而言,具备以下特性的任务可考虑将其托管给Scheduler服务进行管理与调度:

在系统负载较低时(如夜间)定期执行的备份、清除等任务
与用户没有交互的后台任务
需要运行较长时间的任务
需定时执行或反复执行的任务


2.1.调度程序

调度程序是WebSphereApplicationServer中使用管理控制台进行配置的,为Scheduler服务提供任务的持久存储、事务管理以及安全管理的应用程序。可在单个服务器、集群、节点或单元中创建多个调度程序。每个配置后的调度程序是一个独立任务调度引擎,它拥有唯一的Java命名与目录接口(JNDI)名称、持久存储设备和守护程序。

必须先使用管理控制台、配置服务或脚本编制配置调度程序,应用程序才能使用Scheduler服务。概念上,调度程序类似于数据源,我们必须为它指定包括绑定实例的JNDI名称在内的各种配置属性。一旦定义了调度程序,使用调度程序API或WASSchedulerMBean的应用程序就可以查找调度程序对象并调用各种方法来管理任务。

调度程序的运行依赖于一个数据库,以用于存储它的持久信息。数据库及其位置应当由应用程序开发者和服务器管理员决定。调度程序使用这个数据库来存储然后运行这些任务。同时,当我们在每个调度程序配置中指定唯一的表前缀值时,多个调度程序可以共享一个数据库。这种共享可以降低调度程序数据库的管理成本。

2.2.Scheduler任务实现

Scheduler服务可调度由以下两种方式实现的任务:

调用会话Bean的任务
发送java消息的服务
在本文中,我们将使用在控制台中打印输出"HelloWorld"作为任务并以此为例说明在RationalApplicationDeveloper中如何开发、部署和测试调用会话Bean的任务。

2.3.Scheduler服务相关接口说明

2.3.1.Scheduler接口

在调度程序配置的JNDI名称空间中存在一个com.ibm.websphere.scheduler.SchedulerJava对象。您可以通过查找JNDI名称获取调度程序的引用。获得对Scheduler对象的引用后即可以对任务执行创建、暂挂、取消等操作。

2.3.2.TaskInfo接口

TaskInfo对象包含可用于创建任务的信息。这类信息包括任务的名称,标识,开始运行时间,重复运行的时间间隔,重复运的次数以及为任务指定的UserCalendar对象。

该类有多种实现方法,每种方法对应于一种可以运行的任务。可用的TaskInfo实现有:

BeanTaskInfo:调用无状态会话bean。

MessageTaskInfo:将JMS消息发送到队列或将消息发布到主题。

创建TaskInfo对象后,可以通过调用Scheduler.create()方法将该对象提交到调度程序以创建任务。

2.3.3.TaskHandler接口

任务处理程序是一个用户定义的无状态会话bean,它由使用BeanTaskInfo对象创建的任务调用。任务处理程序bean使用以下主接口和远程接口:

com.ibm.websphere.scheduler.TaskHandlerHome
com.ibm.websphere.scheduler.TaskHandler


bean本身需要实现远程接口中定义的process()方法。如果使用BeanTaskInfo对象创建任务,每当运行任务时,将调用TaskHandler会话bean中的process()方法。因此,任务所包含的业务逻辑应在此方法种实现。

2.3.4.UserCanlendar接口

用户日历是一个用户定义的无状态会话bean,当任务需要计算与日期相关的值时会调用它。实现一个用户日历必须实现UserCanlendar接口。用户日历bean使用以下home接口和远程接口:

com.ibm.websphere.scheduler.UserCalendarHome
com.ibm.websphere.scheduler.UserCalendar


bean本身需要实施远程接口中的applyDelta()和validate()方法。

用户日历用于计算时间间隔,如任务运行之间的时间。在其被创建后使用setUserCalendar()方法在TaskInfo接口进行设置,并在需要计算变化量时由调度程序运行时代码调用。

TaskInfo接口提供以下方法指定了使用用户日历进行计算的变化量字符串:

setStartTimeInterval
setStartByInterval
setRepeatInterval


如果未使用TaskInfo.setUserCalendar()方法指定用户日历,系统将使用一个缺省用户日历。缺省日历允许简单变化量规范,如秒、分、时、天和月。WebSphereApplicationServer提供两种类型的缺省用户日历:

CRON:该种类型的日历根据一个以空格或Tab键分隔的字符串表达式计算时间。

SIMPLE:该种类型的日历简单的根据java.util.Canlendar对象计算时间。

由于SIMPLE类型的日历计算方法较为简单也较容易理解,在此我们只距离说明CRON类型的日历。CRON日历根据以下格式的字符串结算时间:

秒分小时日月星期

在表示某一具体时间项目时,"*"号表示任意值;用","号分隔特定的有效值;"-"号表示特定范围;"/"表示增量;"?"表示不确定值。例如:

0231019FEB?

表示二月19日10点23分零秒;

0*12/6?JAN-JUNSAT,SUN

表示一月至六月,每月的周六与周日两天,每天中的12点、18点和24点,每小时中的任意一分钟。

当使用CRON类型的缺省用户日历时,可使用以上格式的字符串计算任务开始时间及时间间隔。

请注意,由于Scheduler在调度任务时并不会精确到秒,因此推荐将表示秒的一项始终设为0。

3.开发基于会话Bean的schedule任务

为运行本文中的例子,您必须安装以下软件产品:

RationalApplicationDeveloper6.0

DB2Universalv8.0或以上版本

RationalApplicationDeveloper6.0

提供了开发、测试scheduler的运行时环境,而DB2将作为存贮调度程序持久信息的数据库。

首先打开RationalApplicationDeveloper,选择某一目录作为RAD的工作空间目录,如下图所示:


图31选择RAD工作空间


选择进入J2EE视图,创建一个EJB项目用以开发由会话Bean实现的任务,如下图所示:


图32新建EJB项目


右键单击"EJB项目",选择"新建"->"EJB项目",输入"ScheduleEJB"作为EJB项目名称,输入"ScheduleEAR"作为EAR项目名称,接受其它缺省选项,点击"完成"。创建EJB以及EAR项目后,项目资源管理器如下图所示:


图33项目资源管理器


单击创建的EJB项目"ScheduleEJB",展开"部署描述符:ScheduleEJB"->"会话Bean",右键单击"会话Bean",选择"新建"->"会话Bean",如下图所示:


图34新建会话Bean


输入"Schedule"作为会话Bean名称,输入"ibm.sample.schedule"作为包名,点击"下一步"


World"信息之一任务为例,说明了在RAD中如何开发、创建、配置并最终测试这一Schedule任务。

6.总结

Scheduler可为J2EE应用程序提供高性能的、具有高可靠性的计时服务功能,它可对被托管的任务进行持久存储并提供事务管理。Scheduler服务通常被广泛用于调度、管理与时间相关的任务或活动,这些任务可调用会话Bean或发送JMS消息,而对Scheduler的管理可通过JavaAPI或JMX实现。

参考资料

WebSphereApplicationServerV6.0在线帮助


WebSphereApplicationServerEnterpriseVersion5andProgrammingModelExtensions


WebSphereEnterpriseScheduler规划和管理指南

出处:软件测试时代http://www.testage.net/

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Copyright 2003-2007 www.icdoor.com. All Rights Reserved.京ICP备05039017号.Powered By Z-Blog.Top