如何实现WebSphere Application Server 6集群环境下的定时服务
2010-09-27 08:31:05 来源:WEB开发网当定时器创建的特定时间到达后,容器就会触发ejbTimeout(),运行ejbTimeOut方法提,Bean在终止之前通过调用定时器Cancel方法取消定时器,它是定时器接口的一部分,如果定时器被取消,ejbTimeout()方法就不会被调用了。定时器接口的getHandle()方法返回一个序列化的handle对象。接下来,这个持续的Handle能够"非序列化",通过调用getTimer()方法得到定时器。由于定时器是本地对象,TimerHandle不必通过Bean的远程接口或Web Services接口来传递。
具体步骤如下:
新建一个EJB项目otherTimer,在这个EJB项目里新建一个otherTimer的会话Bean。
在Bean实体里面需要实现两个方法:
startTimer()和ejbTimeOut。
在startTimer()方法里面,我们通过EJBCONTEXT取得一个TimerService然后创建一个Timer。这个timer将在2005,9月19日晚上8点过5分触发,触发后,EJB容器会调用ejbTimeOut()方法运行具体的商业逻辑,并且这个Timer会在80000毫秒后再次触发。
javax.ejb.TimerService ts=this.getSessionContext().getTimerService();
System.out.println("启动一个时钟!");
Timer timer = ts.createTimer(new Date(105,9,19,20,5,0),80000,"other timer");
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 中必须设置如下:
更多精彩
赞助商链接