首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

怎么实现WebSphere Application Server 6集群环境上的定时服务

2012-12-21 
如何实现WebSphere Application Server 6集群环境下的定时服务本文来自:http://hi.baidu.com/fuqilee/blog

如何实现WebSphere Application Server 6集群环境下的定时服务

本文来自:http://hi.baidu.com/fuqilee/blog/item/8027adee6537ff202df534c1.html

?

?


怎么实现WebSphere Application Server 6集群环境上的定时服务
怎么实现WebSphere Application Server 6集群环境上的定时服务


怎么实现WebSphere Application Server 6集群环境上的定时服务
怎么实现WebSphere Application Server 6集群环境上的定时服务


这两个文件修改完成后,在命令行运行db2cmd转到db2命令窗口。

然后运行db2batch -d timerdb -f createTablespaceDB2.ddl

和db2batch -d timerdb -f createSchemaDB2.ddl生成定时服务所需要的表空间和表。

运行完成后用下列命令验证:



怎么实现WebSphere Application Server 6集群环境上的定时服务



点下一步直至完成

2)分别在hostc和hostb两个节点上选择创建应用服务器概要表。

3)创建完成后在DeployManager概要上运行startManager.sh启动Network Manager。

4)启动完成后打开概要下的日志文件SystemOut.log查看soap端口,缺省为8879。

5)在hostb和hostc两个应用服务器节点上运行addNode.sh hosta 8879

6)运行完成后,打开ND管理控制台:http://hosta:9060/ibm/console

7)在服务器下新建一个群集timertest,创建两个成员为clus01,clus02。启动群集。


怎么实现WebSphere Application Server 6集群环境上的定时服务
怎么实现WebSphere Application Server 6集群环境上的定时服务



点新建。按提示输入所需资料。点数据源,进入数据源页面。

新建一个名为testtimer的数据源,指定jndi名为jdbc/testtimer


怎么实现WebSphere Application Server 6集群环境上的定时服务

测试连接通过后。做下一步设置。


怎么实现WebSphere Application Server 6集群环境上的定时服务
怎么实现WebSphere Application Server 6集群环境上的定时服务
怎么实现WebSphere Application Server 6集群环境上的定时服务


怎么实现WebSphere Application Server 6集群环境上的定时服务
怎么实现WebSphere Application Server 6集群环境上的定时服务


怎么实现WebSphere Application Server 6集群环境上的定时服务
怎么实现WebSphere Application Server 6集群环境上的定时服务

8、 WAS Scheduler实现

基于WAS Scheduler实现定时服务,需要配置一个scheduler,在WAS管理控制台展开资源,点scheduler,新建一个scheduler指定名称、JNDI名、数据源JNDI名(这里可以用前面设置的jndi/testtimer)和表前缀,跟前面设置服务器EJB定时服务容器设置类似。

设置完成后就可以使用scheduler来实现定时服务了。

在EJB模块中创建一个无状态会话bean,该 bean 实现了 com.ibm.websphere.scheduler.TaskHandler 远程接口中的 process() 方法。将您要创建的业务逻辑放入 process() 方法中。当运行任务时,将调用 process() 方法。Home 和 Remote 接口在部署描述符 bean 中必须设置如下:


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

通过使用以下示例工厂方法创建 BeanTaskInfo 接口的一个实例。 使用 JSP 文件、servlet 或 EJB 组件创建实例,如以下代码示例所示。此代码必须与先前创建的 TaskHandler EJB 模块位于同一应用程序中:


Object schedulerObj = initialContext.lookup("java:comp/env/Scheduler"); BeanTaskInfo taskInfo = (BeanTaskInfo) schedulerObj.createTaskInfo(BeanTaskInfo.class)

注: 创建 BeanTaskInfo 对象并不会将任务添加到持久存储中。它将为必要的数据创建一个占位符。直到调用调度程序中的 create() 方法,才会将任务添加到持久存储中。设置 BeanTaskInfo 对象中的参数。 这些参数定义了调用哪些会话 bean 以及何时调用它们。TaskInfo 接口包含可用于控制任务执行的各种 set() 方法,其中包括运行任务的时间以及运行任务时它执行的操作。

BeanTaskInfo 接口要求使用 setTaskHandler 方法设置 TaskHandler JNDI 名称或 TaskHandlerHome。如果使用 WASScheduler MBean API 来设置任务处理程序,则 JNDI 名称必须是标准的全局 JNDI 名称。

使用 TaskInfo 接口 API 方法设置参数,如以下代码示例所示:


java.util.Date startDate = new java.util.Date(System.currentTimeMillis()+30000);Object reportGenHomeObj = initialContext.lookup("java:comp/env/ejb/ReportGenerator");TaskHandlerHome reportGenHome = (TaskHandlerHome)PortableRemoteObject.narrow(reportGenHomeObj,TaskHandlerHome.class); taskInfo.setTaskHandler(home);taskInfo.setStartTime(startDate);scheduler.create(taskInfo);

那么EJB容器将在当前时间的30000毫秒后触发process方法,在taskinfo里面可以设置一些其他schduler的属性,比如运行次数,运行间隔等。

文章里涉及的J2EE标准的定时服务程序在附件的testTimer.ear里面,使用WAS Scheduler的程序在附件的AccountReport.ear里。其中AccountReport.ear是使用WAS自带的Sample程序修改后的程序。

热点排行